Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.07.2009, 22:26
shizik вне форума Посмотреть профиль Отправить личное сообщение для shizik Найти все сообщения от shizik
  № 1  
Ответить с цитированием
shizik

Регистрация: Jun 2002
Адрес: Екатеринбург
Сообщений: 41
Отправить сообщение для shizik с помощью ICQ
По умолчанию Обмен переменными между parent и child

Доброго времени суток. Прошу прощения, что в очередной раз поднимаю наболевшую проблему, но старая закалка с AS2 дает о себе знать.

Сам только начал изучать AS3, до этого несколько лет назад работал с AS2.
Есть опыт работы с другими языками. Пока начинаю с простых примеров:
Смоделировать падающие снежинки разных размеров, скоростей, и т.д.
Снежинки выбрасываем по 10 штук в секунду следующим способом:
Код AS3:
var myTimer:Timer = new Timer(100, 1000);
btn.addEventListener(MouseEvent.MOUSE_DOWN, drop);
myTimer.addEventListener("timer", dropsnow);
 
function drop(event:MouseEvent):void
	{
		myTimer.reset();
		myTimer.start();
	}
 
function dropsnow(event:TimerEvent):void
    {
	                var smb:MovieClip;	
			smb=new snow;					
			addChild(smb);				
	}
В самой снежинке рандомим ее характеристики и жвигаем по экрану:
Код AS3:
var basex:Number=800*Math.random();
var size:Number=2*Math.random();
var amp:Number=16*Math.random();
var spd:Number=2+3*Math.random();
var fi:Number=5*Math.random();
var counter:Number=-50;
var go:Boolean=true;
this.x=basex;
this.y=-100;
width *= size;
height *= size;
addEventListener(Event.ENTER_FRAME, fly);
function fly(event:Event):void
{   if(go){
	counter+=1;
	y=counter*spd/size;
	x=basex+amp*Math.sin(counter/(2*Math.PI)-fi);
	if(this.y>900)
                 {
	         go=false;
	         parent.removeChild(this);
                 }
}
}
Вроде как все работает, захотелось добавить ветер.
В родителе добавил код для изменения направления ветра:
Код AS3:
var wind:Number=0;
addEventListener(Event.ENTER_FRAME, makewind);
function makewind(event:Event):void
{
	if(mouseX<20)
	this.wind-=0.05;
	if(mouseX>780)
	this.wind+=0.05;	
}
Теперь надо, чтоб каждый child узнал чему равно значение ветра у родителя, домножить на свой коэффициент и полететь по ветру, но вот трудность, что раньше в AS2 можно было из любого места обратиться в _root и жить без забот, сейчас же всё иначе, дитя, насколько я понимаю может вызывать методы родителя, но не может знать значения его переменных.
Перебирать родителем каждый child и сообщать ему значения в каждый интервал времени видится как минимум нерациональным, хотя тут и так мало чего рационального.

Подскажите, у кого в данном контексте какие подходы. Можно ли извернуться как раньше?
Линк на пример: http://slil.ru/27859293

Создать новую тему   Часовой пояс GMT +4, время: 07:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.