![]() |
а что делать с watch? какой у него scope?
есть следующий код (при успешной загрузке у класса MusicFile устанавливается атрибут loaded=true, что работает 100%): Код:
musicFile = new MusicFile(scopeRef);Код:
private function ifLoaded ():Void{как решить эту проблему? какая область видимости у watch? заранее спасибо за помощь :) |
так получилось, что за свою короткую жизнь не юзал watch? но если я понимаю правильно думаю делегейт опять должен придти на помощь
Код:
musicFile.watch("loaded",Delegate.create(this,this.ifLoaded)); |
Цитата:
т.е.давать ей нада ссылку , которую видно с этой линейки иными словами вот так работает Код:
musicFile ={ifLoaded:function(o){trace(o)}};Код:
musicFile ={ifLoaded:function(o){trace(o)}}; |
2 silin: текущая линейка - это какая?
по поводу вашего примера - работает, да. но меня интересует такой способ решения задачи, чтобы при загрузке вызывался метод родительского класса. то есть в данном случае не метод класса MusicFile, а метод класса, в котором содержится этот самый экземпляр класса MusicFile (в моем случае "главный" класс Game). |
>>текущая линейка - это какая?
та, где этот код >>не метод класса MusicFile, а метод класса, в котором содержится этот самый экземпляр класса MusicFile помедленней пжлста: экземпляр не может содержаться в классе, может наследовать методы.. т.е. у тебя дожен быть экземпляр, несущий такой метод, тогда передаешь ссылку на метод этого экземпляра или, если метод статический, находишь его в глобал : Game.yourMethod |
есть класс Game. экземпляр его один, но делать через глобал не хочется по политическим мотивам - пригодится на будущее.
в экземпляре game класса Game содержатся экземпляры других классов (например экземпляр musicFile класса MusicFile). хочется, чтобы game сказал musicFile загружаться, а когда тот загрузится - чтобы не в самом musicFile что-то сработало (как это сделать понятно), а чтобы musicFile сказал своему "папе" game (в котором он находится), что он загрузился и можно делать что-то дальше. надеюсь у меня получилось ясно выразиться :) спасибо за ваше терпение :) watch, кстати, ведет себя как-то очень странно. у класса Game есть метод ifLoaded (собственно его код привожу только чтобы проиллюстрировать, что со свойством "loaded2" кроме чтения ничего не происходит): Код:
private function ifLoaded ():Void{Код:
musicFile = new MusicFile();[09:59:386] debug: game.Game.Game() musicFile.loaded2=true //всё как должно быть Код:
musicFile = new MusicFile();[09:29:033] debug: game.Game.ifLoaded() musicFile.loaded2=undefined [09:29:033] fatal: game.Game.ifLoaded() loading finished without error and success [09:29:033] debug: game.Game.Game() musicFile.loaded2=undefined // почему блин?!! что происходит с переменной? куда девается её значение? почему она становится undefined? |
Цитата:
либо сделай событие, и назначь "папу" слушателем |
да вроде ты передаешь ссылку на несуществующий метод, причем тут мистика
Код:
import mx.utils.Delegate |
| Часовой пояс GMT +4, время: 08:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.