![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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? |
|
|
![]() |
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#3
|
|
Новичок ![]() Группа: Новичок Сообщений: 2 Регистрация: 6.04.2012 Пользователь №: 10956 ![]() |
Тема закрыта, разобрался.
Избавился от функции, создал цикл for который добавляет детей в спрайт, затем добавляет на сцену сам спрайт. Соответственно кнопка просто делает removeChild... Был еще вариант (на уровне размышлений), искать обьекты через getChildAt по типу и удалять. Но не пробовал реализовать.. |
|
|
![]()
Сообщение
#4
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4957 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
aminmsk, вот и хорошо, что разобрался.
Раз таким методом смог добиться, чтобы работало без ошибок, значит хорошо. Другим это также может пригодиться. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 29.07.2014 - 07:50 |