【问题标题】:AS3- how to addchild this array(john) correctlyAS3-如何正确添加这个数组(约翰)
【发布时间】:2014-02-12 00:48:11
【问题描述】:

我不知道如何添加 john 数组并用它创建一个 hittestobject。 Bal 是与此问题无关的不同类别。 我试过做约翰[新巴尔] 试过约翰[k] 尝试了 z 并将 z 指定为一个 for 循环,但我只会得到 Z 球的位置。 这应该成为一种太空侵略者类型的游戏。我正在尝试在 HENK 和“落球”(JOHN)之间制作一个命中测试对象。我不知道如何使用数组,特别是考虑到应该是计时器触发的事实。

谢谢

public class Main extends Sprite

{
   public var henk:Sprite = new Sprite();
   public var level:Timer = new Timer (2000, 0);
   public var valTijd:Number = new Number
   public var i:Number = 2000;
   public var john:Array = new Array(); 
   public var k:Number = 9000;  

   public function Main():void


   {
        henk.graphics.beginFill(0xFF00FF);
        henk.graphics.drawCircle(0, 500, 20);
        henk.graphics.endFill();
        addChild(henk);

        level.addEventListener(TimerEvent.TIMER, up);
        level.start();

        henk.addEventListener(Event.ENTER_FRAME, muis);
        henk.addEventListener(Event.ENTER_FRAME, hit); 


   }

    public function up(e:TimerEvent):void
    {             
        var tijdje:Timer = new Timer( i, 0)
        tijdje.addEventListener(TimerEvent.TIMER, tijdLuisteraar);
        tijdje.start();
         i = i - 250;

    }
       public function muis (e:Event):void
    {
        henk.x = mouseX;
    }






    public function hit (e:Event): void
    {
        if ( henk.hitTestObject(john [k] )) 
         { 
             if (contains(john[k] ))
            {
                removeChild(henk);
                    }

         }

    }



    public function tijdLuisteraar(e:TimerEvent):void
    {



                john.push(new Bal);
                addChild(john[k]);



    }

}

}

【问题讨论】:

    标签: arrays actionscript-3 flash adobe addchild


    【解决方案1】:

    欢迎使用 stackoverflow!

    这个问题实际上相当简单,我将描述在你描述的情况下你可能希望如何使用数组。

    在创建新球的部分,您希望将它们附加到数组中,如下所示:

    var ball = new Bal();
    john.push(ball);
    addChild(ball);
    

    显然,这将进入您的计时器触发函数。

    其次,您希望有一个 hitTestObjecthenk 以及所有存储在 john 数组中的球。

    for(var i = 0; i < john.length; i++) {
        if (henk.hitTestObject(john[i])) {
            // well, that's a bummer for your player, henk hit one of the balls in the john array
            // display something like a message here
        }
    }
    

    这将自动检测数组的大小,因此所有元素都被测试。当 john-array 中有很多元素时,请小心使用 hitTestObject,这会大大降低游戏速度。

    此外,反映您的代码我建议如下:

    • 去掉public var i:Number = 2000;public var k:Number = 9000;,这些都没有意义了
    • 使用鼠标事件移动henk 对象,而不是ENTER_FRAME。我想您将能够找到这是如何工作的。这只会在它必须做某事时触发该函数,从而减少所需的 CPU 功率和更简洁的代码。
    • 如果您想让游戏更酷,可以添加对使用方向键的支持

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多