首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定帧上的AS3运动对象

特定帧上的AS3运动对象
EN

Stack Overflow用户
提问于 2017-04-07 09:03:43
回答 1查看 274关注 0票数 2

因此,我已经为这个游戏工作了一个星期,我根本没有任何编码背景,所以我试着到处寻找教程。然后我想到了这个问题..。

所以我想要做的是当我点击框架80时,将对象(CHARA)移到右边(CHARA,这是一个嵌套的movieClip,有99帧),然后当我点击框架99时,将它移回原来的位置.问题是,我所做的任何事情都不能使我的对象移动(movieClip还在播放),我在这里做错了什么?我是不是把密码放错位置了??(只有当我将代码x=直接放在框架80中时才会移动CHAR,但是我尝试在这里使用类)

这是我的代码,抱歉,我知道这是我的第一条代码,我在这里尽力了

代码语言:javascript
复制
package {

    public class Main extends MovieClip {

        public var CHARA:CHAR = new CHAR;//my main char
        public var rasen:Rasen_button = new Rasen_button;//the skill button
        public var NPCS:NPC = new NPC;// the npc

        public function Main() {
            var ally:Array = [265,296];//where me and my ally should be
            var jutsu:Array = [330,180];// where the buttons should be
            var enemy:Array = [450,294];//where the enemies should be

            addChild(NPCS);
            NPCS.x = enemy[0];
            NPCS.y = enemy[1];
            NPCS.scaleX *=  -1;

            addChild(rasen);
            rasen.x = jutsu[1];
            rasen.y = jutsu[0];

            addChild(CHARA);
            CHARA.x = ally[0];
            CHARA.y = ally[1];
            rasen.addEventListener(MouseEvent.CLICK, f2_MouseOverHandler);
            function f2_MouseOverHandler(event:MouseEvent):void {
                CHARA.gotoAndPlay(46); //here is the problem
                if (CHARA.frame == 80)
                {
                    CHARA.x = ally[1]; //just random possition for now
                }

            }
        }
    }
}

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 14:37:52

您的if语句位于单击处理程序(f2_MouseOverHandler)中,因此它只在用户单击rasen时执行,而不一定是在播放到达frame 80时执行。这是初学者在计时和代码执行方面的一个常见错误。最直接的解决方案是编写一些代码,使用ENTER_FRAME处理程序执行每一帧:

代码语言:javascript
复制
        rasen.addEventListener(MouseEvent.CLICK, f2_MouseOverHandler);
        function f2_MouseOverHandler(event:MouseEvent):void {
            CHARA.gotoAndPlay(46); //here is the problem

            // add an ENTER_FRAME handler to check every frame
            CHARA.addEventListener(Event.ENTER_FRAME, chara_EnterFrameHandler)
        }
        function chara_EnterFrameHandler(event:Event):void {
            if (CHARA.currentFrame == 80)
            {
                CHARA.x = ally[1]; //just random possition for now

                // remove the ENTER_FRAME after the condition is met
                // so it stops executing each frame
                CHARA.removeEventListener(Event.ENTER_FRAME, chara_EnterFrameHandler);
            }
        }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43274044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档