2015-09-12 2 views
0

Im пытается сделать простую игру в AS3, где игрок ест как можно больше мячей. Я не знаю, как правильно кодировать код, и у меня возникают проблемы с добавлением нового шара на сцену каждый раз, когда вас едят. это код, который у меня есть в main.as на данный момент.ActionScript 3: object respawning

private var startX:Number = 512; 
    private var startY:Number = 384; 
    private var speed:Number = 8; 
    var player1; 
    var player2; 
    var player3; 
    var theBall; 
    player1 = new player(50,384, 1); 
    player2 = new player(944,384,2); 
    player3 = new player(488,84,3); 
    stage.addChild(player1); 
    stage.addChild(player2); 
    stage.addChild(player3); 

    if(theBall.hitTestObject(player1) || theBall.hitTestObject(player2) || theBall.hitTestObject(player3)) 
     { 
      //removes the ball from the stage 
      trace("a player has eaten a ball"); 
      stage.removeChild(theBall); 
      //adds new ball 
      //stage.addChild(theBall); 
      //reset x and y 
      startX = Math.random()*speed-speed/2; 
      startY = Math.random()*speed-speed/2; 
     } 

В ball.as ив указано, как мяч должен двигаться случайным образом, начать в центре сцены и отскакивают от стен.

ошибок не возникает, код просто не работает. как вы делаете новый мячик в центре сцены, когда его едят? я объявляю это, где я пытался в основном, или в ball.as?

ответ

0

Если у вас есть «шар» Объект, в том, как у вас есть «игрок» объект, а затем ...

 //removes the ball from the stage 
     trace("a player has eaten a ball"); 
     stage.removeChild(theBall); 
     //reset x and y 
     startX = Math.random()*speed-speed/2; 
     startY = Math.random()*speed-speed/2; 
     //adds new ball 
     theBall = new ball(); 
     theBall.x = stage.stageWidth/2; 
     theBall.y = stage.stageHeight/2; 
     stage.addChild(theBall); 

Вы повторно использовать «theBall» переменный, так как вы удалили съеденную экземпляр со сцены. Старый экземпляр «theBall» выбрасывается с stage.removeChild (theBall), а затем вы создаете новый и добавляете этот новый на сцену.

+0

Thankyou! У меня есть настройка объекта шара точно так же, чтобы это сработало отлично! :) – 3M3

0

Перед вашим кодом, если ШАЛ не вызывается и не подготовлен к вашей сцене. Возможно, это не сработает.

В библиотеке, проверьте movie_clip, которые содержат мяч ... И под строкой «AS увязка» рядом с названием фильма Clipe ... Вы должны назвать его, например, «BALL_TEST»

В коде AS3:

Добавить это перед кодом

var ball_bounce:BALL_TEST = new BALL_TEST(); 

Тогда ваш код

Если я сделал правильно понял ваш вопрос ...

С уважением

+0

О, извините, я не упоминал об этом, но да, я установил «мяч», готовый к сцене. Благодарю за помощь! действительно оценили :) – 3M3

+0

Нет проблем. Попробуйте обновить полный код. Таким образом, каждый может легко помочь. Береги себя. Будет проверять ваш код. У вас есть какие-либо ошибки или компиляция проблемы? – Arsenil98

+0

О, правда, да, жаль, что я не знал, что я пропустил важные элементы, но да, спасибо, буду делать следующий раз :) У меня есть одна ошибка, но она связана с stage.removeChild (theBall); ArgumentError: Ошибка # 2025: поставляемый DisplayObject должен быть дочерним элементом вызывающего. \t в flash.display :: DisplayObjectContainer/RemoveChild() \t на главных/checkForCollision() им очень плохо с сценарием действий, но мяч исчезает со сцены, как я хотел, чтобы это так я просто игнорировал ошибки аха – 3M3

Смежные вопросы