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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.11.2008, 03:12
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 11  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
можно так:
Код AS3:
package
{
 
	import flash.display.MovieClip;
	import flash.utils.setTimeout;
 
	public class Example extends MovieClip
	{
 
		private var _quantity:int = 5;
 
		public function Example()
		{
			var delay:Number = Math.ceil(1000 / stage.frameRate);
 
			for (var i:int = 1; i <= _quantity; i++) {
 
				var mc:Mc = new Mc();
				mc.gotoAndStop(i);
				setTimeout(stopClip, delay, mc, i);
 
				mc.x = 100 * i;
				mc.y = 200;
				addChild(mc);
 
			}
		}
 
		private function stopClip(mc:MovieClip, index:int):void
		{
			var clip:MovieClip = mc.getChildByName('symbol' + index) as MovieClip;
			clip.stop();
		}
	}
}
__________________
freelance | Раздор

Старый 25.11.2008, 21:05
N1ka вне форума Посмотреть профиль Отправить личное сообщение для N1ka Найти все сообщения от N1ka
  № 12  
Ответить с цитированием
N1ka
 
Аватар для N1ka

Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
Цитата:
Сообщение от __etc Посмотреть сообщение
Меня очень смущает тот факт, что вы 5 раз копируете 4 функции, в которых используете обращение к последнему созданному Mc.
Ну я понимаю что нужно оптимизировать это, но я незнал как потому и копировал, но derhab помог мне и теперь я буду знать как можно сделать чтобы не копировать одно и то же...

Цитата:
Сообщение от derhab Посмотреть сообщение
можно так:
...
Очень благодарю, получилось!

П.С. Люблю такие ответы, может быть все готовенькое преподнесли, но с другой стороны можно увидеть и разобраться самому как и почему так работает... Ибо я только учусь и нашел для себя в этом ответе новое.

И еще, можно узнать все-таки как реализовать мою задачу с помощью addFrameScript?


Последний раз редактировалось N1ka; 25.11.2008 в 21:08.
Старый 27.11.2008, 05:45
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 13  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
а вот когда ты дождался (после таймаута) добавления вложенного клипа в дисплейлист, можешь применить к этому клипу addFrameScript

Код AS3:
package
{
 
	import flash.display.MovieClip;
	import flash.utils.setTimeout;
	import flash.events.Event;
 
	public class Example extends MovieClip
	{
 
		private var _quantity:int = 5;
 
		public function Example()
		{
			var delay:Number = Math.ceil(1000 / stage.frameRate);
 
			for (var i:int = 1; i <= _quantity; i++) {
 
				var mc:Mc = new Mc();
				mc.gotoAndStop(i);
				mc.visible = false;
				setTimeout(stopClip, delay, mc, i);
 
				mc.x = 100 * i;
				mc.y = 200;
				addChild(mc);
 
			}
		}
 
		private function stopClip(parentMC:MovieClip, index:int):void
		{
			var child:MovieClip = parentMC.getChildByName('symbol' + index) as MovieClip;
			var frame:uint = 1 + Math.floor(Math.random() * _quantity);
			child.addFrameScript(0, function(){
						   child.gotoAndStop(frame);
						   child.rotation = Math.random()* 360; 
                                                   child.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
						   parentMC.visible = true;
					       });
 
		}
 
		private function enterFrameHandler(e:Event):void
		{
			var clip:MovieClip = e.target as MovieClip;
			var scale:Number = .3 + Math.random();
			clip.scaleX = clip.scaleY = scale;
		}
	}
}
__________________
freelance | Раздор


Последний раз редактировалось derhab; 27.11.2008 в 05:49.
Старый 01.12.2008, 12:39
N1ka вне форума Посмотреть профиль Отправить личное сообщение для N1ka Найти все сообщения от N1ka
  № 14  
Ответить с цитированием
N1ka
 
Аватар для N1ka

Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
Большое спасибо!

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

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

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


 


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


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