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

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

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

Регистрация: Sep 2012
Сообщений: 204
По умолчанию Метод addChild в нужный контейнер

Привет
Ситуация такая:
Мне надо правильно направить ребенка методом addChild.
Instance name контейнера указать я не могу, т.к. на сцене несколько контейнеров, и и у элементов внутри них единый код через e.currentTarget
Получается если я просто добавляю addChild -ом, то элемент ложится поверх всего на главную сцену, и он виден на всех контейнерах, когда я меняю их видимость
Код AS3:
function clicked (e:MouseEvent):void{
 
	if (animation == true){
		return;
	}
	else{
		srcX = e.currentTarget.x;
		srcY = e.currentTarget.y;
		var scaleNew = (stage.stageHeight-240) / e.currentTarget.startHeight;
 
		if (!zoomed){
			if (page1.visible == true){
				TweenLite.to(page1.ugolki, 0.5, {alpha:0});
			}
			else {
				TweenLite.to(page2.ugolki2, 0.5, {alpha:0});
			}
			animation = true;
			addChild(e.currentTarget as MovieClip);
 
			TweenLite.to(e.currentTarget, 1, {delay:0.2, x:stage.stageWidth/2, y:stage.stageHeight/2, scaleX:scaleNew, scaleY:scaleNew, ease:Back.easeOut, onComplete: finishedAnimation});
			zoomed = true;
		}
		else{
			if (page1.visible == true){
				TweenLite.to(page1.ugolki, 0.3, {delay: 0.5, alpha:1});
				page1.addChild(page1.ugolki);
			}
			else{
				TweenLite.to(page2.ugolki2, 0.3, {delay: 0.5, alpha:1});
				page2.addChild(page2.ugolki2);
			}
			animation = true;
			TweenLite.to(e.currentTarget, 0.6, {x:e.currentTarget.startX, y:e.currentTarget.startY, scaleX:1, scaleY:1, ease:Back.easeIn, onComplete: finishedAnimation});
			zoomed = false;
		}
	}
}


Последний раз редактировалось pomuс; 20.12.2012 в 19:46.
Старый 20.12.2012, 19:18
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Поскольку вопроса пока не прозвучало, а следующим сообщением будет "и чо, опять ни одного телепата на форуме?", попробую начать дискуссию.
1)
Цитата:
TweenLite.to(page2.ugolki2, 0.3, {delay: 0.5, alpha:1});
page2.addChild(page2.ugolki2);
page2.visible = false;
О мой мозг...

2) Что вдохновило Вас 7 раз написать "e.currentTarget" в одной функции?
__________________
Reality.getBounds(this);

Старый 20.12.2012, 19:46
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 3  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Wolsh
вопрос состоит в том, что можно ли как то указать в методе addChild тот контейнер, откуда изначально вызван клип? Если бы там был всего 1 контейнер, то понятно что это выглядело бы как page1.addChild(e.currenttarget); . но в данном случае у e.currentTarget может быть как page1, так и page7.
В по моей логике я бы это написал как parent.e.currentTarget.addChild(e.currentTarget) .. "добавить в изначального родителя"

1) да, это я что то влепил не то, когда экспериментировал наверное
2) ну насколько хватало навыков, так и делал.. а есть вариант сделать проще?

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

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Опишите что происходит у вас, и что должно происходить. Если объект на сцене у него не null свойство parent. Так вы можете получить ссылку на его "контейнер" и в него уже добавлять (вам правда нужно добавлять объект туда где он уже есть ещё раз?) объект.
__________________
Будь проще.

Старый 20.12.2012, 21:08
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 5  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Цитата:
Сообщение от KBAC Посмотреть сообщение
Если объект на сцене у него не null свойство parent. Так вы можете получить ссылку на его "контейнер" и в него уже добавлять
чего то не понял

ну да, надо добавлять туда же. Конечно если бы можно было как то назначать индекс слоя подругому как не addChild то пошел бы и другой вариант. Я знаю про setChildIndex но там суть одна и та же, контейнер надо указать

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
а есть вариант сделать проще?
Ну да.. записать ссылку на объект в переменную
Код AS3:
function clicked (e:MouseEvent):void{
	var mc:MovieClip = e.currentTarget as MovieClip;
	if (animation == true){
		return;
	}
	else{
		srcX = mc.x;
		srcY = mc.y;
		var scaleNew = (stage.stageHeight-240) / mc.startHeight;
 
		if (!zoomed){
			if (page1.visible){
				TweenLite.to(page1.ugolki, 0.5, {alpha:0});
			}
			else {
				TweenLite.to(page2.ugolki2, 0.5, {alpha:0});
			}
			animation = true;
			mc.parent.addChild(mc); // наверное, так?
 
			TweenLite.to(mc, 1, {delay:0.2, x:stage.stageWidth/2, y:stage.stageHeight/2, scaleX:scaleNew, scaleY:scaleNew, ease:Back.easeOut, onComplete: finishedAnimation});
			zoomed = true;
		}
		else{
			if (page1.visible){
				TweenLite.to(page1.ugolki, 0.3, {delay: 0.5, alpha:1});
				page1.addChild(page1.ugolki);
			}
			else{
				TweenLite.to(page2.ugolki2, 0.3, {delay: 0.5, alpha:1});
				page2.addChild(page2.ugolki2);
			}
			animation = true;
			TweenLite.to(mc, 0.6, {x:mc.startX, y:mc.startY, scaleX:1, scaleY:1, ease:Back.easeIn, onComplete: finishedAnimation});
			zoomed = false;
		}
	}
}
А то ж не только читать тяжело, Вы заставляете плеер каждый раз разыскивать объект через другие ссылки.
Так же избыточны конструкции типа if (page1.visible == true). Вы берете булево от булево. Можно бесконечно упаковывать их в скобки например)) :
if (((page1.visible == true) == true) == true) {}
Выглядит нелепо, но Вы делеаете абсолютно то же самое, когда пишете if (page1.visible == true).
Потому как эти выражения равны: (page1.visible == true) абсолютно равно (page1.visible)
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Я бы на вашем месте стер весь этот код и написал с нуля, более обдуманную версию. Тут вообще не понятно что и куда добавляется

Старый 21.12.2012, 01:15
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 8  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Wolsh спасибо, ввел изменения.
Просто я так изначально писал, т.к. совсем зеленый в АС3, и таким способом мне легче было проследить логику скрипта

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

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

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


 


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


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