Здравствуйте, гость ( Вход | Регистрация )

> Прошу помощи / консультации по AS3
aminmsk
сообщение 6.04.2012 - 12:11
Сообщение #1


Новичок
*

Группа: Новичок
Сообщений: 2
Регистрация: 6.04.2012
Пользователь №: 10956



Доброго всем времени суток!
Сам являюсь новичком в AS как таковом и в AS3 в частности, пишу свой первый "проект".
Для написания использую Adobe Flash 5.5.

Прошу помочь с следующим.
Есть функция:
Код
function smallFoto(getXPosition,getAlpha,imgAddrrPrev){
        var viewerFotoPreviewR:viewerFotoPreview= new viewerFotoPreview;
    var viewFoto= viewerFotoPreviewR.viewerUILoader;
    viewFoto.load(new URLRequest (imgAddrrPrev));
    stage.addChild(viewerFotoPreviewR);
            
    viewerFotoPreviewR.width= 135;
    viewerFotoPreviewR.height= 110;
    viewerFotoPreviewR.x= getXPosition;
    viewerFotoPreviewR.y= 770;
    viewerFotoPreviewR.alpha= getAlpha;
    
}


Проблема в следующем:
На stage в этот момент так же есть объект, который имеет кнопку. При нажатию на которую все "дети", добавленные этой функцией, должны удалиться. Но у меня это не получается.

Код
var buttonClose = vieWer.viewButtClose; //кнопка находится внутри фрагмента ролика в библиотеке и сама является фрагментом ролика.
buttonClose.addEventListener(MouseEvent.CLICK, closeViewer);
        function closeViewer(e:MouseEvent):void{
            stage.removeChild(vieWer); //первый обьект удаляется нормально
            stage.removeChild(viewerFotoPreviewR); // получаю "Обращение несуществующего свойства viewerFotoPreviewR"
        }


Понимаю, что истинна где то рядом. Так же ясно, что проблема в том что переменная "viewerFotoPreviewR" доступна только внутри функции.
Как заставить флеш удалить все экземпляры viewerFotoPreviewR?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов (1 - 3)
MustLive
сообщение 8.04.2012 - 00:06
Сообщение #2


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4957
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Цитата
Как заставить флеш удалить все экземпляры viewerFotoPreviewR?

aminmsk

Так и есть, истина рядом. Тебе лишь нужно разобраться с основами ActionScript (или любого другого языка поддерживающего парадигму ООП).

Ты создаёшь экземпляр класса viewerFotoPreview - переменная viewerFotoPreviewR - внутри функции smallFoto. И он доступен только внутри неё. А потом ты обращается к viewerFotoPreviewR из другой функции closeViewer, что и приводит к ошибке.

Ты объяви данный объект (переменную viewerFotoPreviewR) в качестве глобальной переменной - в частности не в рамках функций, а в кадре. Что должно решить проблему. Но это AS1/AS2 подход, а у тебя код на AS3 и строка "stage.addChild(viewerFotoPreviewR);" должна была решить данную задачу. Но у addChild явно есть свои нюансы и ты должен с ними разобраться прочитав документацию по addChild (сам я с AS3 не работал, поэтому не помогу). Прочитай хелп к AS3 и научись правильно добавлять и удалять объекты на сцене.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
aminmsk
сообщение 11.04.2012 - 13:23
Сообщение #3


Новичок
*

Группа: Новичок
Сообщений: 2
Регистрация: 6.04.2012
Пользователь №: 10956



Тема закрыта, разобрался.
Избавился от функции, создал цикл for который добавляет детей в спрайт, затем добавляет на сцену сам спрайт.
Соответственно кнопка просто делает removeChild...

Был еще вариант (на уровне размышлений), искать обьекты через getChildAt по типу и удалять. Но не пробовал реализовать..
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 18.04.2012 - 23:58
Сообщение #4


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4957
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



aminmsk, вот и хорошо, что разобрался.

Раз таким методом смог добиться, чтобы работало без ошибок, значит хорошо. Другим это также может пригодиться.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 29.07.2014 - 07:50