Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Клонируем и управляем


Автор: GRESHNIK512 6.8.2015, 19:03
Собственно есть кораблик от него при нажатий кнопки создается пулька. 
function Pt(){  Br_1=Br_1-EP;
               patr = new Patr();
                   addChild(patr);
               patr.x=sh_2.x+50 *Math.cos©;
               patr.y=sh_2.y+50 *Math.sin©;
               ra[q]=C;
                   q=q+1;
    
    }
Далее через обработчик событий в теле:
patr.addEventListener(Event.ENTER_FRAME,patr_p);

Переходим на функцию
 function patr_p (p:Event) {
       var PATR:MovieClip = p.currentTarget as MovieClip;
            
     PATR.x += 1.1* Math.cos(ra[q-1]);
     PATR.y += 1.1* Math.sin(ra[q-1]);
        
     if(PATR.x > 850) {PATR.x = -50;}     
         if(PATR.x < -50) {PATR.x = 850;} 
         if(PATR.y < -50) {PATR.y = 650;} 
         if(PATR.y > 650) {PATR.y = -50;}
         
     }

Проблема в том что запуская новую пульку все пульки меняют направление на последнюю может знает кто как сделать пулькам индивидуальную скорость т к направление я передаю в массив "ra" через q 
Пишите все соображения

Кто хочет потестить как летит пулька J +  WASD и постреляться жмите L мышку и WASD щиток Y

Автор: GRESHNIK512 9.8.2015, 20:00
После  мозгового штурма все таки нашел решение, осталось додумать как передать направление из основного фала в Patr.as(Класс)
не забываем в главном файле выставить импорт :" import Patr.*;  "

Patr.as
package  {
    import flash.display.MovieClip;
    import flash.events.Event;
    

    public class Patr extends MovieClip {
        private var k:int;            
        
           
           public function Patr() {this.addEventListener(Event.ENTER_FRAME, onEnter);}
          
               private function onEnter(e:Event):void{
                    ++k;    
                     trace(k);         
                   if (k<100){
                    this.x += 1.1* Math.cos(5);
                    this.y += 1.1* Math.sin(5);
                   }
                   if (k>100) {
                          this.x += 1.1* Math.cos(2);
                          this.y += 1.1* Math.sin(2);
                         }                                
         
    }

    }}



Запуская главный файл пулька летит сначала вверх k  продолжает наростать и когда равняется 100 меняет направление при запуске новой пульки предыдущая не меняет свое направление ))

  function patr_p (p:Event) {
        var Pa = p.target ;
                   
        if ((Pa.x > sh_1.x-15) && (Pa.x < sh_1.x+15) && (Pa.y > sh_1.y-20) && (Pa.y < sh_1.y+20)) {
        Xhp -=DP;
        Pa.removeEventListener(Event.ENTER_FRAME,patr_p);
                removeChild(Pa);  }    
        
                
     if (Pa.x > 850) {Pa.x = -50;}     
         if (Pa.x < -50) {Pa.x = 850;} 
         if (Pa.y < -50) {Pa.y = 650;} 
         if (Pa.y > 650) {Pa.y = -50;}    
         
         
     }
        


function Pt(){  Br_1=Br_1-EP;
                var patr:Patr = new Patr();
                            patr.x=sh_2.x+50 *Math.cos©;
                patr.y=sh_2.y+50 *Math.sin©;
                            addChild(patr);
                ra[q]=C;
                           q=q+1;
                     patr.addEventListener(Event.ENTER_FRAME,patr_p);
                 
    }
Хоть чуточку начал понимать классы )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)