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

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

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

Регистрация: Jul 2009
Сообщений: 93
Код AS3:
for(var i:int = 1; i < 61; i++)
{
	var obj:DisplayObject = bigmap.getChildByName("BTN"+i) as DisplayObject;
	obj.addEventListener(MouseEvent.CLICK, clickHandler);
}

Старый 21.08.2009, 16:24
zzz_dmg вне форума Посмотреть профиль Отправить личное сообщение для zzz_dmg Найти все сообщения от zzz_dmg
  № 12  
Ответить с цитированием
zzz_dmg

Регистрация: Aug 2008
Адрес: moscow
Сообщений: 137
а как быть в такой ситуации. достою первый клип, задаю ему твин и энтерфрейм. как только клип по х превысит свою ширину, за ним достается следующий и т.д. а по MOTION_FINISH я пытаюсь этот клип удалить. но почему-то удаляется только первый, последующие на это не реагируют. почему клипы не реагируют, они все же привязаны к этому твину, может надо каждому свой твин задать?
Код AS3:
var img:Array = [];
function img_mod(){
var c:Class = getDefinitionByName(mov_name[i]) as Class;
var mov:MovieClip = new c() as MovieClip;
this.addChild(mov);
img[i] = mov;
img[i].x = -50;
img[i].y = 115; 
var myTween:Tween = new Tween(img[i], "x", Elastic.easeOut, -50, 500,20, true);
myTween.addEventListener(TweenEvent.MOTION_FINISH, motion); 
img[i].addEventListener(Event.ENTER_FRAME, enter_frame);
if (i == total-1){
	i = 0;
}
}
function motion (event:TweenEvent):void {
	removeChild(img[i]);
}
function enter_frame (event:Event):void {
	if (img[i].x > img[i].width+5){
		img[i].removeEventListener(Event.ENTER_FRAME, motion);
		i++;
		img_mod();
	}
}

Старый 21.08.2009, 16:38
igrayka вне форума Посмотреть профиль Отправить личное сообщение для igrayka Найти все сообщения от igrayka
  № 13  
Ответить с цитированием
igrayka
[+1.3 21.08.09]
 
Аватар для igrayka

Регистрация: Oct 2007
Сообщений: 39
Отправить сообщение для igrayka с помощью ICQ Отправить сообщение для igrayka с помощью Skype™
получилось вот так . По другому вообще не работает пишет - TypeError: Error #1009: Cannot access a property or method of a null object reference.
at AS::Control()
Код AS3:
var BTNlistener:*;
for(i=1;i<bigmap.numChildren;i++) 
{
	BTNlistener = bigmap.getChildAt(i);
	BTNlistener.addEventListener(MouseEvent.ROLL_OVER, BTNrollOverHandler);
	BTNlistener.addEventListener(MouseEvent.ROLL_OUT, BTNrollOutHandler)
			}
вычитал вот тут http://siliren.ru/content/view/95/1/

Добавлено через 13 минут
а теперь вопрос )

как заставить в зависимости от того какая кнопка была нажата, определенные клипы менять свой тайм лайн ?

тоесть : у нас есть кнопка BTN34 и есть клип CLIP34 , если на кнопку навели мышку то клипчик выполняет gotoAndPlay(10) . мышку убрали gotoandStop(1) . Стандартная фичка

Добавлено через 10 часов 7 минут
решил эту штуку вот так

Код AS3:
protected function BTNrollOutHandler(event:MouseEvent):void {
			//bigmap.shape_34.gotoAndPlay("stop");
			stopShape(event.currentTarget);
		}
		function stopShape(BTNClip:*):void {
			var index = bigmap.BTNContainer.getChildIndex(BTNClip);
			bigmap.ShapeContainer["shape"+index].gotoAndPlay("stop");
		}

но пришлось создать 2 контэйнера ... и в них хранить только кнопки и клипы, строго хронологически их добавлять и называть, иначе ничего не работает ...

вот бы знать как имя клипа кнопки ( INSTANCE NAME ) считывать когда он событие передает !


Последний раз редактировалось igrayka; 22.08.2009 в 02:46.
Старый 23.08.2009, 19:39
cauchy вне форума Посмотреть профиль Отправить личное сообщение для cauchy Найти все сообщения от cauchy
  № 14  
Ответить с цитированием
cauchy
 
Аватар для cauchy

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
Dante, ну тогда уже так:
Код AS3:
var c:Class = getDefinitionByName( "s" + i ) as Class;
var s:Sprite = new c() as Sprite;
this.addChildAt( s );
Что-то никак не врублюсь. Этот код создаёт переменную с именем "s" и типом "s1" (для i=1)? Или что он делает?
А хотелось бы узнать тогда, как создать переменную с именем ["s"+i] и типом sprite.

А код из цитаты я так и не смог заставить работать %)


Последний раз редактировалось cauchy; 23.08.2009 в 19:43.
Старый 23.08.2009, 21:09
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 15  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
cauchy, Вы что пытались этим кодом сделать? этот код добавляет мувик из библиотеки ( "s1", где i=1 )

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

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
BlooDHounD, если честно я сам запутался что я пытался сделать С getDefinitionByName я разобрался, это не то, что мне было нужно.
Лучше я здесь задам корректный вопрос, из за которого собственно я и забрёл в эту тему:
Мне необходимо программно создать, например, 100 объектов (пусть они являются экземплярами покласса Sprite), и затем их разместить на экране, добавить к ним слушателей и ещё как-либо ими управлять. Для этого необходимо использовать массив, в который и добавляются все эти объекты? Причём имён эти объекты иметь не будут, а получить доступ к ним можно только как к элементу массива по индексу?
Я правильно подхожу к решению данной задачи? Или есть способ лучше?

Надеюсь ничего страшного, что я решил это в данной теме спросить

Старый 23.08.2009, 22:10
FlashRabbit вне форума Посмотреть профиль Отправить личное сообщение для FlashRabbit Найти все сообщения от FlashRabbit
  № 17  
Ответить с цитированием
FlashRabbit
 
Аватар для FlashRabbit

Регистрация: Jul 2009
Сообщений: 93
Будет быстрее если спрайты накидать в контейнер, а потом брать их от туда с помощью getChildAt().

Старый 23.08.2009, 22:46
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 18  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
правильно подходите. закидывайте в массив и обращайтесь по индексу.

Старый 24.08.2009, 00:59
cauchy вне форума Посмотреть профиль Отправить личное сообщение для cauchy Найти все сообщения от cauchy
  № 19  
Ответить с цитированием
cauchy
 
Аватар для cauchy

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Спасибо за ответы, решил пока остановиться на массиве.

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

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

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


 


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


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