【问题标题】:How to walk a game character using mouse event in Adobe Animate CC AS3?如何在 Adob​​e Animate CC AS3 中使用鼠标事件行走游戏角色?
【发布时间】:2016-11-14 16:28:04
【问题描述】:

这个问题与我之前的帖子“TypeError: Error #1010: A term is undefined and has no properties” in AS3 相关,因为正如我在那里提到的,我正在为我们的论文创建一个 Android 游戏。现在,我在链接中有一个角色的精灵表:sprite character,我在游戏中使用它。我正在研究如何让角色行走,我在网站上找到了一个,它确实有效,但不幸的是,它失败了,因为角色实际上并没有行走。我不知道将在那里放置什么代码。我将通过单击鼠标来行走一个角色,或者我将创建一个按钮然后单击它来行走一个角色。我可以使用什么代码?任何帮助将不胜感激。

附:在我之前的帖子中,我正在从时间轴创建代码,但现在由于一些错误,我将其转移到 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 时,就会出现问题。谢谢!

【问题讨论】:

  • 展示你的尝试
  • 我将编辑我的问题。
  • @NealDavis 这是我上面的代码。
  • 我正在为我们的论文创建一个 Android 游戏”所以你基本上是在写一篇关于你不知道的东西的论文?
  • 尝试将 mouseX 替换为 mouseX - gril.x 之类的东西

标签: actionscript-3 flash


【解决方案1】:

让我们来看看你损坏的游戏循环

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
}
}

你看到问题了吗?从 0 开始,这个 for 循环甚至不会执行一次

应该是

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 次呢?我建议退后一步,从你的老师那里获得一些帮助,因为这似乎很遥远。对不起。

【讨论】:

  • @tatactic 实际上你的i==0 永远不会执行:)
  • @tatactic 应该是i &gt;= 0
  • 真的很抱歉这个错误@NealDavis
  • 已编辑为答案,即使这不是答案... @NealDavis 我无法再编辑评论了:(
  • 无论如何,@cjoyy27 没有反馈 :)
【解决方案2】:

再次感谢@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

这在Looping reference中有很好的解释

ActionScript 3 fundamentals: Loops reference

真丢脸!!! ;)

我是菜鸟! :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

【讨论】:

  • 这是游戏的“可能”循环吗?但是,我想知道使用鼠标事件行走的角色的代码。我已经将它转换为电影剪辑并使用洋葱皮分离它的精灵表。它只有一个方向,它穿过钥匙,在抓住钥匙后(在游戏循环中)出现问题。然后,改变背景并重复。顺便说一句,我们论文的截止日期是明天晚上 7 点,PH 时间。 :(谢谢你的帮助。
  • 哎呀,我没有时间这么快给你这个答案。 SRY :(
  • Aww.. 嗯.. 创建游戏提示/线索怎么样?在测验问题中,有一个多项选择,4个选择。在进行问答题时,如果用户不知道答案,则有一个线索,只是消除其中的两个,并且有多个线索。如果一条线索已经被使用,那么它的数量会减少1。如果没有更多线索,并且如果用户连续3次正确回答,则线索将增加1。:/
  • 我只是在问,因为我需要将它应用到我的游戏中(或者可能在其他日子因为我只想完成系统的 50%)。如果您对此有想法,那很好,但如果没有,也没关系。顺便说一句,再次感谢!
猜你喜欢
  • 2016-08-19
  • 2021-02-12
  • 2017-03-05
  • 1970-01-01
  • 2017-11-03
  • 2019-08-29
  • 2017-04-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多