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

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

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

Регистрация: Sep 2012
Сообщений: 204
По умолчанию Не могу удалить последний Child

ситуация такая. есть клипы "a" "b" "c"
в каждом из них есть кнопка которая добавляет следующий клип (a---->b ; b----->c) методом addChild.
также есть кнопка которая располагается в "a" клипе.
задача стоит в том, чтобы эта кнопка была всегда выше всех клипов (это у меня получалось через добавление к каждому коду
Код AS3:
setChildIndex(btn, +1);
может есть и другие способы. ну так вот, надо чтобы эта кнопка удаляла добавленый клип. поясню, когда находимся на "a" клипе, добавляется "b". кнопка пропадает, и скриптом она подымается наверх. Если к ней прописать
Код AS3:
removeChild(b);
то она работает, т.к. скрипты появления и удаления клипа "b" находятся в одном фрейме. а вот если удалить уже следующий клип "c" то название он не находит ( что логично) а удаление через индекс не работает

Какие есть способы решить задачу?

Старый 19.10.2012, 21:42
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
задача стоит в том, чтобы эта кнопка была всегда выше всех клипов
Ну так а зачем удалять клипы?
Вызывайте время от времени
Код AS3:
addChild(btn)
и кнопка всегда будет наверху.

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

Регистрация: Sep 2012
Сообщений: 204
да, тоже вараинт, но не решает основной задачи- эта самая кнопка нужна чтобы возвращаться на шаг назад, и удалять их надо.
Кстати попробовал эксперимента ради вынести все скрипты в 1 фрейм ( то есть и той кнопкой на "b"что управляет появлением клипа "c" )
Код AS3:
b.btn.addEventListener(MouseEvent.CLICK, openNewNew);
function openNewNew (MouseEvent):void{
  addChild(с);
}
это не принесло результатов

Старый 19.10.2012, 21:53
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Пальцем в небо:
Код AS3:
if (b.parent)
    b.parent.removeChild(b);
 
if (c.parent)
    c.parent.removeChild(c);

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

Регистрация: Sep 2012
Сообщений: 204
с кодом к кнопке
Код AS3:
btn2_btn.addEventListener(MouseEvent.CLICK, closeNew);
function closeNew (MouseEvent):void{
	if (b.parent){
		b.parent.removeChild(b);
	}
 
	//else if (с.parent){
		//с.parent.removeChild(с);
	//}
 
 
}
срабатывает только первая часть. пр иоткрытой второй вопит оибкой, что Symbol 'a', Layer 'Layer 2', Frame 1, Line 16 1120: Access of undefined property c.

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
если хотите получить ответ напишите что вам нужно понятнее: желательно с картинками, а лучше писать код, не совсем понятно что вы хотите получить в итоге.

Старый 21.10.2012, 13:05
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 7  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
Цитата:
Сообщение от pomuс Посмотреть сообщение
Не могу удалить последний Child
Печалька

А если серьёзно, я 3 раза перечитал ваш пост и думаю, что чёткая постановка проблемы решит её на 95%.

Цитата:
Сообщение от pomuс Посмотреть сообщение
ситуация такая. есть клипы "a" "b" "c"
в каждом из них есть кнопка которая добавляет следующий клип (a---->b ; b----->c) методом addChild.
Куда добавляет? Друг в друга?
Цитата:
Сообщение от pomuс Посмотреть сообщение
задача стоит в том, чтобы эта кнопка была всегда выше всех клипов
Вариант 1: Все мутные махинации с a, b и c проводить в клипе-контейнере, который изначально лежит ниже этой волшебной кнопки.
Вариант 2: добавлять клипы на нижний уровень
Код AS3:
addChildAt(movie, 0)
Вариант 3: добавлять клипы ниже уровня кнопки (если они в том же клипе)
Код AS3:
var childIndex:uint = 0;
if(magicButton != null) {
if(magicButton.parent == this) {
childIndex = getChildIndex(magicButton);
}
}
addChildAt(movie, childIndex );


Последний раз редактировалось Anton Riot; 21.10.2012 в 13:06. Причина: теги
Старый 21.10.2012, 14:33
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 8  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Да, уж извините за нечеткое описание вопроса.. а тот момент мне казалось что все очевиидно. )
Итак с подробностями:
1) На главное сцене есть код, вызывающий клип "а" в котором есть кнопка btn1_btn и есть кнопка close_btn (которая должна закрывать последние вызванные child)
Код AS3:
var a:class1 = new class1();
addChild(a);
в этом клипе "а" есть код в первом кадре
Код AS3:
var b:classb = new classb();
 
btn1_btn.addEventListener(MouseEvent.CLICK, openNew);
function openNew (MouseEvent):void{
  addChild(b);
}
соответственно по нажатию btn1_btn добавляется еще 1 child "b". В нем есть кнопка btn2_btn и код в первом кадре
Код AS3:
var c:classc = new classc();
 
btn2_btn.addEventListener(MouseEvent.CLICK, openNewNew);
function openNewNew (MouseEvent):void{
  addChild(с);
}
итак нужно чтобы кнопка close_btn была всегда поверх этих вызываемых клипов, и чтобы она вызывала функию на закрытие последнего вызывванного Child`а. Как бы возврат на предыдущий шаг.
эксперимента ради я делал клипы b и c меньше по размерам клипа а, и прописывал в А клипе следующее
Код AS3:
close_btn.addEventListener(MouseEvent.CLICK, closeNew);
function closeNew (MouseEvent):void{
	removeChild(b);
	}
а к функции кнопки btn1_btn подписывал код
Код AS3:
addChild(close_btn) //чтобы кнопка ложжилась поверх клипа b
но дальше удалять клип C никак не удасться, я пробовал через removeChildAt и прописывал последние индексы, но удалялся только тот child который был на отдном клипе с close_btn

что то мне подсказывает что это танцы с бубном, и возможно это все сделать если выкладывать все эти клипы на одном таймлайне, и тут уже закрывать кнопкой последний вызывнный Child. Если это возможно, какой код нужен для определение последнего добавленного клипа, чтобы подписать к removeChild. И самое главное- как из главного таймлайна руководить нажатиями кнопки в клипе, который только БУДЕТ вызван. Если писать такой код, скрипт не определяет эти кнопки, т.к. их еще нету.
Фух.. надеюсь понятно описал

Старый 21.10.2012, 14:55
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 9  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
по поводу добавления вам уже ответили:
Цитата:
Сообщение от Anton Riot Посмотреть сообщение
Вариант 3: добавлять клипы ниже уровня кнопки (если они в том же клипе)
Код AS3:
var childIndex:uint = 0;
if(magicButton != null) {
if(magicButton.parent == this) {
childIndex = getChildIndex(magicButton);
}
}
addChildAt(movie, childIndex );
чтобы удалять последний добавленный нужен такой код
Код AS3:
removeChildAt(this.numChildren-2);


Последний раз редактировалось Isfet; 21.10.2012 в 15:05.
Старый 21.10.2012, 14:59
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 10  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
так, с этим разобрались, спасибо!!!
Цитата:
Сообщение от pomuс Посмотреть сообщение
И самое главное- как из главного таймлайна руководить нажатиями кнопки в клипе, который только БУДЕТ вызван. Если писать такой код, скрипт не определяет эти кнопки, т.к. их еще нету.
Фух.. надеюсь понятно описал
вот с этим неясность.. можно ли так сделать?

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

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

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


 


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


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