添加一个可以由数组中的每个sprite单独使用的函数

时间:2014-01-27 21:17:33

标签: actionscript-3 actionscript

我需要通过点击它们来移动球,但是它们需要单独移动,我还需要使用存储有精灵的数组。我搜索了过去几个小时但找不到答案,这可能很明显,但我有点累了。

import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

/**
 * ...
 * @author Sam
 */
public class Main extends Sprite 
{
    public var array:Array = new Array();
    public var bal:Sprite = new Sprite();

    public function Main():void 
    {
    for (var i:int = 0; i < 501; i++)
        {
            bal.graphics.beginFill(0x00FFFF);
            bal.graphics.drawCircle(600 * Math.random(), 800*Math.random(), 10);
            bal.graphics.endFill();

            array.push(bal);
            array[i].addEventListener(MouseEvent.CLICK, gaweg);
            addChild(bal);
        }
    }

    public function gaweg(e:MouseEvent):void
    {
        x += 3;
    }

我正在使用的代码,我显然是初学者,'gaweg'是用于移动球的功能,我称之为Sprites'bal'。

1 个答案:

答案 0 :(得分:2)

应该使用OOP解决此问题,即使用Ball函数创建gaweg对象。球也应该负责画画。

public class Ball extends Sprite
{
    public function Ball()
    {
        graphics.beginFill(0x00FFFF);
        graphics.drawCircle(600 * Math.random(), 800 * Math.random(), 10);
        graphics.endFill();

        addEventListener(MouseEvent.CLICK, _gaweg);
    }

    private function _gaweg(e:MouseEvent):void
    {
        x += 3;
    }
}

这样,Ball是一个独立的对象,可以绘制自己并拥有自己的点击处理程序。从这里,您可以将当前代码简化为:

public class Main extends Sprite
{
    public var balls:Array = [];

    public function Main()
    {
        for(var i:int = 0; i < 501; i++)
        {
            var ball:Ball = new Ball();
            balls.push(ball);
            addChild(ball);
        }
    }
}