![]() |
MovieClipLoader, существуют ли указатели в as
Привет,
пытаюсь создать флэшку с двумя клипами которые будут инициализироваться(из xml) и показываться по очереди. Ссылки на клипы храняться в глобальных переменных _global.ActiveTemplate, _global.NextTemplate. когда приходит время показать новое окно, клип ActiveTemplate выгружается, а клип NextTemplate загружается. Проблема возникла с использованием указателей(?) на клипы. В методе onLoadInit, target указывает действительный клип(есть все методы и свойства), а _global.NextTemplate указывает на клип без свойств и методов. Вопрос: cуществуют ли указатели или что то подобное в actionscript и что такое храниться в target и _global.NextTemplate если это не указатели? Код:
.... |
onLoadInit:function -- что это?
|
Под указателями ты имеешь ввиду делегаты из C#?
|
Цитата:
я имею ввиду ссылки на объекты, вот например когда ты делаешь Код:
var p1 = new myObj();ответ: указатель(ccылка) на объект myObj так вот по идее в моём коде target и NextTemplate указывают на один и тот же объект, но у target есть свойства(разные контролы) а у NextTemplate этих свойств нет... |
ясно, и еще ты знаешь что код в первом посте у тебя не рабочий, по крайней мере первая часть синтактически не правильная.
Причина в принципе проста, дело в том что во время загрузки, твои мувики как бы пересоздаются ( с какой то точки зрения метод loadMovie,и MovieClipLoader.loadClip, можно расматривать как фабричный метод) и поэтому одна из сылок указывает на старый объект а другая на новый, но это все теории, если ты дашь рабочий код, можно будет разобратся на месте. |
Цитата:
Синтаксис правильный, я так создаю объект. Код:
WindowListener = { |
Цитата:
|
это
Код:
onLoadInit: function(target:MovieClip){ |
Цитата:
Код:
a = {b:function (c:Number) { |
oxid2, прочитайте пункт 3 (остальные тоже почитайте для общего развития) правил подраздела http://www.flasher.ru/forum/showthread.php?t=79864
|
хм не заметил фигурных скобок вокруг этого безобразия.
тоесть еще раз, у двух объектов свойства разные, но они проходят проверку сравнения? мм...у меня не получается с эмулировать такой ситуации |
Вложений: 1
Цитата:
Сделал рабочую версию, единственное что требуется для тестирующих поправить это изменить пути в строках 51, 53 к любым двум клипам. Кликаем на кнопку вверху и смотрим trace, после третьего щелчка, проблема начинает проявляться(т.е. после unloadClip), и cвойства перестают появляться хотя ссылки одинаковые. |
Люди, посмотрите пожалуста где тут собака порылась.
|
Разобраться в таком коде невозможно.
Проще переписать заново, где будет меньше воды. |
Цитата:
Цитата:
Неужели можно в 55 строчках простого кода запутаться? |
Легко, потому что никакой чёткой логики там нет.
Поэтому проще переписать заново. |
Цитата:
Это кусок моего кода, адаптированный для теста. Что он делает? могу объяснить ещё раз, но ИМХО там понятно написанно Скрипт по клику на кнопке загружает на сцену один из клипов(для тестов надо укзать пути к двум клипам на вашем компе), если на сцене уже есть клип, то он будет выгружен. |
я если честно тоже не понял логики кода, мне почему то кажется что если переписать, используя более дедовские способы, все заработает нормально
|
oxid2, это можно описать гораздо короче.
Код:
target_mc = this.createEmptyMovieClip('target_mc',0); |
Ну не знаю что там не понятного,
WindowListener - это аналог статического объекта, можно наверное и по другому как то писать, я обычно так делаю как в javascript. MovieClipLoader - известный класс, для отслеживания загрузки. Всё остальное проверка на то какое окно активное в данный момент. А как дедовскими методами? |
Цитата:
Во первых у меня всегда меняются клипы, при каждом нажатии на кнопку, у тебя же показывается только второй клип. Вобщем присутствуют как логические так и синтаксический ошибки. |
Цитата:
Цитата:
|
Цитата:
Код:
target_mc = this.createEmptyMovieClip('target_mc',0);Цитата:
Лучше перед тем как постить куски кода, проверь их на работоспособность и логичность. Цитата:
Ну про синтаксическую ошибку я выше сказал... |
Каждому человеку свойственно ошибаться.
Этот код я писал прямо в форме ответа и не проверял его на работоспособность. Спасибо за найденные ошибки, возвращаю свои слова обратно. з.Ы. Тем не менее, исправив ошибки, мой код будет гораздо проще. |
oxid2, если в твоем примере мувики пересоздавать на заранее отведенных и фиксированных глубинах, а не на getNextHighestDepth, то проблема снимается..
а сейчас получается что NextTemplate и target ссылаются на разные мувики, но на разных глубинах, но с одинаковыми именами .. почему так получается я понять не сумел: грузим во вновь созданный, а в target onLoadInit передается старый, да еще и без свойств.. |
silin,
интересно конечно, старый грузится без свойств по тому что он был наверное выгружен. Так что такое хранится в target и NextTemplate? не указатель а просто путь к мувику что ли? вобщем не понятно. |
| Часовой пояс GMT +4, время: 19:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.