Actionscript 3 动作脚本3按x、y移动对象

Actionscript 3 动作脚本3按x、y移动对象,actionscript-3,Actionscript 3,我有编程课的家庭作业。我的任务是创建气球射击游戏。我用我的方式做每件事,气球正在繁殖,反作用。但是我不能让它们向上移动,我知道如何移动=y++。这是我的问题,我不知道在哪里,如何。代码如下: import flash.events.MouseEvent; import flash.events.Event; var c = 0; circle.addEventListener(MouseEvent.MOUSE_DOWN, handlerMouseDown); circle.addEventLis

我有编程课的家庭作业。我的任务是创建气球射击游戏。我用我的方式做每件事,气球正在繁殖,反作用。但是我不能让它们向上移动,我知道如何移动=y++。这是我的问题,我不知道在哪里,如何。代码如下:

import flash.events.MouseEvent;
import flash.events.Event;
var c = 0;
circle.addEventListener(MouseEvent.MOUSE_DOWN, handlerMouseDown);
circle.addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp);
function handlerMouseDown(event:MouseEvent):void{
    circle.startDrag();
}

function handlerMouseUp(event:MouseEvent):void{
    circle.stopDrag();
    var i:int;
    for (i=numChildren-1;i>=0;i--)
        if (getChildAt(i) is MyRectangle){
            if (circle.hitTestObject(getChildAt(i))){
                removeChildAt(i);
                c++;
                score.text =c;
            }
        }
}

var moveUp:Boolean = true;
var b:Boolean = false;
var t1 = 1000;
var t2 = 1002;
var myTimer:Timer = new Timer(t1); 
myTimer.addEventListener(TimerEvent.TIMER, runMany);
myTimer.start();

function runMany(event:TimerEvent):void {
    b = true;
    t1+=50;
}

var myTimer2:Timer = new Timer(t2); 
myTimer2.addEventListener(TimerEvent.TIMER, runMany2);
myTimer2.start();

function runMany2(event:TimerEvent):void {
    b = false;
    t2 -=50;
}

addEventListener(Event.ENTER_FRAME, handlerEnterFrame);
function handlerEnterFrame(event:Event):void{
var rect:MyRectangle = new MyRectangle();

addChildAt(rect,0);
if(b){
    rect.x = int(Math.random()*width);
    rect.y = int(Math.random()*height)
    }
}

circle.addEventListener(Event.ENTER_FRAME, handlerEnterFrame2);
function handlerEnterFrame2(event:Event):void{
    Mouse.hide();
    circle.startDrag(true);
}

从你的描述中我看到的一个问题是你的坐标有点错误。屏幕左上角为(0,0),如果使用
y++
,对象将向下移动,而不是向上移动<代码>y--会将其向上移动…尽管速度很慢


第二件事是,你需要做一些更新周期。您的
Balloon
类应该有一个
update()
函数,每个Balloon的每个帧都会调用该函数。在气球的更新功能中,您可以将
y--
(或其他东西来改变其位置)。一旦你做到这一点,你可能还想在那里做碰撞检测。您需要将所有引出序号(以及随时间变化的所有其他内容)放置在一个数组中,并使用
for
循环对数组中的每个项目执行每个帧调用
update()
。无论何时向后台添加内容,都应将其添加到每帧更新的对象数组中。

您需要一个包含所有引出序号的数组,这样您就可以在其
y
属性中应用更改,使其看起来向上浮动。您需要一个数组,以便所有引出序号可以同时向上浮动。您的输入帧处理程序不合适。第一个在屏幕上生成MyRectangle。第二个开始拖动。这通常不是每帧都做。根据某些条件(例如,最后一个气球弹出)生成对象,并在鼠标左键按下时拖动。EnterFrame处理程序用于更新坐标。是的,我也找到了,修复了。好的,我做到了,就像亚历克索说的那样——我把它们放在阵列中,然后开始每一步。ThxBalloon类中有事件侦听器和方法的balloon类发生了什么?因为3是一种面向对象的语言,所以不要鼓励像将所有内容都放在一个类中这样的习惯。