2014-02-05 2 views
1

Я не знаю, как добавить массив john и создать hittestobject с ним. Bal - это другой класс, не имеющий отношения к этой проблеме. Я попытался сделать john [new Bal] попробовал john [k] попытался z и указать z как for-loop, но тогда я бы просто получил Z шаров. Предполагается, что это будет игра типа космического захватчика. Я пытаюсь сделать хит-тест объекта между HENK и «падающими шарами» (JOHN). Я не знаю, как работать с массивами, особенно учитывая тот факт, что это должно срабатывать по таймеру.AS3- как правильно установить этот массив (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]); 



    } 

} 

}

ответ

0

Добро пожаловать в StackOverflow!

Эта проблема на самом деле довольно проста, я опишу, как вы, вероятно, захотите использовать массив в описанном вами случае.

В той части, где вы создаете новые шары, которые вы хотите добавить их в массив, который будет что-то вроде следующего:

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

Это будет продолжаться внутри функции таймера срабатывает, очевидно.

Во-вторых, вы хотите иметь hitTestObject с henk и все шары, хранящиеся в массиве 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 
    } 
} 

Это автоматически определит размер массива, поэтому все элементы будут протестированы. Будьте осторожны с hitTestObject, когда у вас много элементов в john-массиве, это может сильно замедлить вашу игру.

Кроме того, отражающее ваш код, я предлагаю следующее:

  • удалить public var i:Number = 2000; и public var k:Number = 9000;, они не имеют никакого значения больше
  • использовать событие мыши, чтобы переместить henk объект, а не ENTER_FRAME. Думаю, вы сможете найти, как это работает. Это вызовет только функцию, когда она должна что-то сделать, в результате чего потребуется меньше энергии процессора и более чистый код.
  • если вы хотите сделать игру еще более прохладной, вы можете добавить опору на клавиши со стрелками
Смежные вопросы