移动对象不起作用但我没有错误

时间:2013-11-24 13:56:09

标签: actionscript-3 flash function object animation

我写了一些actionscript 3代码,用于在另一个对象关闭时移动一个对象。 我用flash cs5.5 问题是,当我添加一些代码只移动该对象一次时,代码停止正常工作。也许问题不是代码本身,而是对象或对象实例中的某些东西,但我没有改变任何东西。 我得到了你在代码中可以看到的所有痕迹,但是当我将“磁铁”关闭到“钟摆”时,钟摆不会像它那样移动旋转。

import flash.events.MouseEvent;
import flash.events.Event;

var angle:Number = 0; //angle for rotation of object "pendulum"
var rotate:Number = 45; // value to multiple to calculate rotation

//global variable
var moved_once: int=0; //variable for checking the first move of the object 

function move_pendulum(e:Event):void{

    trace("hit"); //to check if enters the function
 pendulum1.rotation = Math.sin(angle) * rotate; //execute rotation
 angle +=0.3; //increase angle for next rotation
trace("hit2"); //to check if the function ends
}

magnet1.addEventListener(MouseEvent.MOUSE_DOWN, start_magnet); //for start dragging //object "magnet"
magnet1.addEventListener(MouseEvent.MOUSE_UP, stop_magnet); //for stop dragging //object "magnet"


function start_magnet(event:MouseEvent):void{

    magnet1.startDrag(); //start dragging of object "magnet"

    //check if the two objects are close enough
    if(magnet1.x >pendulum1.x && (magnet1.x-pendulum1.x)<100){
        trace("range detect");
    //check if it is the first time which the two objects are close enough
    if(moved_once==0){
        trace("called move");
        move_pendulum(event); //call function for rotating object "rotation"
        moved_once++; //increase counter for not rotating again
            }                                       
                                                            }

                                            }//end of function                                                  

function stop_magnet(event:MouseEvent):void{

    magnet1.stopDrag(); //stop dragging of object
    trace("stopped");
    }

我没有任何错误或其他任何错误。出了什么问题?我看不到任何东西。

1 个答案:

答案 0 :(得分:0)

这是你的问题:

if(moved_once==0){
move_pendulum(event); //call function for rotating object "rotation"
moved_once++; //increase counter for not rotating again
}  

你正在检查全局变量moving_once的值,如果它是0,那么你移动钟摆然后增加moving_once。在此点之后,moving_once = 1并且条件(moved_once == 0)永远不再为真 再加上你唯一一次调用move_pendulum angle = 0(和sin(0)= 0和0 * rotate = 0)它不会去任何地方。
如果你总是希望摆锤移动,那么完全移除它。如果你只是想要摆锤移动,例如,你拖动磁铁那么你最好用bool替换moving_once。