这个问题与我之前在AS3的文章《TypeError: Error #1010: A term is undefined and has no properties》有关,因为正如我在文章中提到的,我正在为我们的论文创造一款Android游戏。现在,我在链接中有一个角色的精灵表:精灵角色,我在游戏中使用它。我在研究如何让一个角色走路,我在一个网站上找到了一个,它实际上是有效的,但不幸的是,它失败了,因为这个角色实际上不会走路。我不知道什么代码将在那里。要么我将通过点击鼠标移动角色,要么我将创建一个按钮,然后点击它来移动角色。我可以用什么代码呢?如有任何帮助,不胜感激。
注:在我之前的帖子中,我从时间轴创建了一个代码,但现在我把它转移到Actionscript文件,因为一些错误。
编辑:这是我的字符代码:
forward.addEventListener(MouseEvent.CLICK, ppap);
function ppap(event:MouseEvent):void{
gril.x += mouseX;
gril.y += mouseY;
gril.gotoAndStop('i');
gameloop();
}
function gameloop(): void {
for (var o = 0; o > 5; o++) {
if (linya.hitTestObject(gril)) {
o++;
gotoAndStop(2);
scorer.visible = true;
timer.visible = true;
}
}
}
以及字符所在的行:gril.gotoAndStop('a');
gril
为字符的实例名。当到达linya
时,问题就出现了。谢谢!
让我们回顾一下你的游戏循环
function gameloop(): void {
for (var o = 0; o > 5; o++) { //sets o to 0, loops as long as o > 5 (which it isn't, since we just set it to 0;
if (linya.hitTestObject(gril)) {
o++; //this also adds 1 to o
gotoAndStop(2);
scorer.visible = true;
timer.visible = true;
}
// if this part ever executed, it would add 1 to o
}
}
你看到问题了吗?这个for循环从0 <5
应该是
function gameloop(): void {
for (var i = 0; i < 5; i++) {
if (linya.hitTestObject(gril)) {
gotoAndStop(2);
scorer.visible = true;
timer.visible = true;
break;
}
}
}
这里我们有一个函数式的(但没有意义的)for循环。它会起作用,但是第一次循环的结果和第二次、第三次、第四次、第五次是一样的因为把变量的值改变1实际上并没有改变任何东西。你只是告诉程序检查碰撞状态5次。在任何可以改变之前,它会这样做5次。它会在每个游戏循环中检查5次。好吧,我向你保证,在for循环运行的时候没有任何东西在移动,所以为什么要检查5次呢?我建议你退一步,向你的老师或其他人寻求帮助,因为这似乎太离谱了。对不起。
再次正确@NealDavis,谢谢你的评论!!我的评论写得太快了
从0到>4(5项)的升序循环:
for (var i:uint = 0; i < 5; i++){
trace("ascending = " + i);
}
输出:ascending = 0
ascending = 1
ascending = 2
ascending = 3
ascending = 4
从4到>0(5项)的降序循环:
for (var j:int = 4; j>=0; j--){
// j must be an int in this case, second mistake!
trace("descending = " + j)
};
输出:descending = 4
descending = 3
descending = 2
descending = 1
descending = 0
我的错误。SRY
这在循环引用
中有很好的解释和ActionScript 3 fundamentals: Loops引用
我真丢脸!!;)
我是新手!: D
所以我删除了我的评论;)
哇,我对这个错误感到非常抱歉!!// You may also create Vectors to store the values.
var ascending:Vector.<uint> = new Vector.<uint>;
var descending:Vector.<uint> = new Vector.<uint>;
for (var k:uint = 0; k < 5; k++){
ascending.push(k+1);
}
trace("ascending Vector.<uint> = " + ascending);
// Output : ascending Vector.<uint> = 1,2,3,4,5
for (var l:int = 4; l >= 0; l--){
descending.push(l+1);
}
trace("descending Vector.<uint> = " + descending);
// Output : descending Vector.<uint> = 5,4,3,2,1
或升序循环:
trace("nascending Vector.<uint> loop : ")
for(var m:String in ascending){
trace(m + " = " + ascending[m]);
}
输出:
ascending Vector.<uint> loop :
0 = 1
1 = 2
2 = 3
3 = 4
4 = 5
或者在降序循环中:
trace("descending Vector.<uint> loop : ")
for(var n:String in descending){
trace(n + " = " + descending[n]);
}
输出:descending Vector.<uint> loop :
0 = 5
1 = 4
2 = 3
3 = 2
4 = 1