|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2015
Сообщений: 10
|
Как обратиться к клипам, котрые добавлены на сцену с помощью таймера?
import flash.utils.Timer; import flash.events.Event; var myTimer:Timer = new Timer(1000); myTimer.addEventListener(TimerEvent.TIMER,addRound); myTimer.start(); function addRound(evt:TimerEvent) { var myRound:Round = new Round ; addChild(myRound); myRound.x = Math.random() * 400; myRound.y = Math.random() * 400; trace(myRound.numChildren); } stage.addEventListener(Event.ENTER_FRAME,roundRun); function roundRun(evt1:Event) { //как обратиться к добавленным клипам? } |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
просто обратитесь, имя же зачем давали?
Правда код кривоват, так что поправлю на ваш вариант stage.addEventListener(Event.ENTER_FRAME,roundRun); function roundRun(evt1:Event) { if (myRound.stage != null) myRound.x += 1; //ваш объект начнёт движение } хотя код совсем кривой у вас, попробую немного поправить import flash.utils.Timer; import flash.events.Event; var myRound:Round = new Round () ; var myTimer:Timer = new Timer(1000); myTimer.addEventListener(TimerEvent.TIMER,addRound); myTimer.start(); function addRound(evt:TimerEvent) { addChild(myRound); myRound.x = Math.random() * 400; myRound.y = Math.random() * 400; trace(myRound.numChildren); } stage.addEventListener(Event.ENTER_FRAME,roundRun); function roundRun(evt1:Event) { if (myRound.stage != null) myRound.x += 1; //ваш объект начнёт движение } тогда создаться один объект myRound - с ним и пробуйте играться, а если нужно много, то вот часть моего кода, использовал массив, код как есть package StartClass { import flash.display.Sprite; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; public class StartDaubClass extends Sprite { public var inkwar_str: inkwar_mc = new inkwar_mc(); private var str_daub_1: str_daub_1_mc = new str_daub_1_mc(); private var str_daub_2: str_daub_2_mc = new str_daub_2_mc(); private var str_daub_3: str_daub_3_mc = new str_daub_3_mc(); private var str_btn: str_btn_mc = new str_btn_mc(); public var str_daub_Array: Array = new Array(str_daub_1, str_daub_3, str_daub_2, str_btn); public function StartDaubClass(): void { this.addEventListener(Event.ADDED_TO_STAGE, fn_startTimer); } private var _timer: Timer = new Timer(600, 4); private function fn_startTimer(e: Event): void { this.removeEventListener(Event.ADDED_TO_STAGE, fn_startTimer); _timer.addEventListener("timer", fn_timer); inkwar_str.x = 800; inkwar_str.y = 300; this.addChild(inkwar_str); _timer.start(); } private var i: Number = 0; private function fn_timer(e: TimerEvent): void { this.addChild(str_daub_Array[i]); if (i == 0) { str_daub_Array[i].x = 400; str_daub_Array[i].y = 500; } if (i == 1) { str_daub_Array[i].x = 1200; str_daub_Array[i].y = 350; } if (i == 2) { str_daub_Array[i].x = 900; str_daub_Array[i].y = 900; } if (i == 3) { str_daub_Array[i].alpha = 0.1; str_daub_Array[i].scaleX = 0.7; str_daub_Array[i].scaleY = 0.7; str_daub_Array[i].x = 800; str_daub_Array[i].y = 500; this.addEventListener(Event.ENTER_FRAME, fn_str_btn); this.removeEventListener("timer", fn_timer); } ++i; } private function fn_str_btn(e: Event): void { if (str_daub_Array[3].alpha < 1) { str_daub_Array[3].alpha *= 1.04; } else { this.removeEventListener(Event.ENTER_FRAME, fn_str_btn); } } } } |
|
|||||
neonoviiwolf, ужас какой... Учите новичка никаким правилам оформления.
ИМХО, ваш код глаза режет. Я уже не раз отсылал вас читать конвенции, кажется. Читай, код новичка причёсан лучше, чем ваш. Добавлено через 1 минуту По теме - просто объявление переменной вынесите за пределы функции. И не надо морочить голову.
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
Это старый код, совсем не охота переписывать, если хочет, может и разберётся
Да и не такой уж и страшный, если учитывать как всё начинал |
|
|||||
import com.greensock.plugins.RoundPropsPlugin; import flash.utils.Timer; import flash.events.Event; var myTimer:Timer = new Timer(1000); myTimer.addEventListener(TimerEvent.TIMER, addRound); myTimer.start(); var rounds:Array = []; // создаём массив, куда будем помещать объекты Round function addRound(evt:TimerEvent) { var myRound:Round = new Round(); addChild(myRound); myRound.x = Math.random() * 400; myRound.y = Math.random() * 400; trace(numChildren); rounds.push(myRound); //поместили очередной объект в массив } stage.addEventListener(Event.ENTER_FRAME, roundRun); function roundRun(evt1:Event) { //просто перебираем массив for (var i:int = 0; i < rounds.length; i++) { var r:Round = rounds[i]; trace(r.x, r.y, r.width); } } |
|
|||||
Регистрация: Feb 2015
Сообщений: 10
|
А не является ли такое решение избыточным? Ведь нам придется в каждом фрейме прогонять цикл . Возможно ли обойтись без цикла for?
|
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
Можете обратиться только к нужному элементу в массиве.
|
|
|||||
.
|
Цитата:
|
Часовой пояс GMT +4, время: 22:33. |
|
« Предыдущая тема | Следующая тема » |
|
|