|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Интересное поведение после загрузке свф файла с подключённым классом
Пишем класс:
import flash.display.BitmapData; class TestClass extends MovieClip { public function TestClass (){ trace ('class2'); var mc:MovieClip = this.createEmptyMovieClip("mc_1", 1); var mc:MovieClip = this.createEmptyMovieClip("mc_1", 1); mc.beginFill(0x00CC00); mc.lineTo(0, 50); mc.lineTo(40, 50); mc.lineTo(40, 0); mc.lineTo(0, 0); } } далее видоизменяем класс: import flash.display.BitmapData; class TestClass extends MovieClip { public function TestClass (){ trace ('class2'); var mc:MovieClip = this.createEmptyMovieClip("mc_1", 1); var mc:MovieClip = this.createEmptyMovieClip("mc_1", 1); mc.beginFill(0xCC3300); mc.lineTo(0, 50); mc.lineTo(40, 50); mc.lineTo(40, 0); mc.lineTo(0, 0); } } Имеем два свф файла, тыкаем на "empty1" получаем прямоугольник одного цвета, тыкаем на "empty2" получаем прямоугольник другого цвета. Теперь самое интересное, загружаем в общий документ сначало один свф потом при желании пытаемся загрузить второй свф. import mx.utils.Delegate; var mcloader:MovieClipLoader = new MovieClipLoader (); this.btn1_mc.onRelease = Delegate.create (this, this.load1); this.btn2_mc.onRelease = Delegate.create (this, this.load2); _root.createEmptyMovieClip('content_mc', 1); function load1 ():Void { trace ('1'); mcloader.loadClip('empty1.swf', this.content_mc); } function load2 ():Void { trace ('2'); mcloader.loadClip('empty2.swf', this.content_mc); } Если сначало был загружен первый то при попытке загрузит свф номер два грузится снова первый, если сначало загружаем второй то следовательно при попытке вызвать свф намба ван опять загружается намба ту. Кто-нибудь объясните почему так происходит, не одно моё соображение не подаётся никакой логике. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
А fla положить? Сваял три свфки, скрыл внутренности и теперь как хочешь, так и смотри.
|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Код во флашках ничем не отличаются от приведённого кода, прикол именно в последовательности действий.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Это все очень просто объясняется тем, что идет проверка if (!_global.TestClass)
import mx.utils.Delegate; var mcloader:MovieClipLoader = new MovieClipLoader (); this.btn1_mc.onRelease = Delegate.create (this, this.load1); this.btn2_mc.onRelease = Delegate.create (this, this.load2); _root.createEmptyMovieClip('content_mc', 1); function load1 ():Void { trace ('1'); delete _global.TestClass; mcloader.loadClip('empty1.swf', this.content_mc); } function load2 ():Void { trace ('2'); delete _global.TestClass; mcloader.loadClip('empty2.swf', this.content_mc); } |
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Что-то до меня не особо доходит кто осуществляет эту проверку, сама идея этого действия интересна и не понятна. Если не сложно __etc, объясни.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Это все результат того, что AS2 транслируется в AS1.
|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
понятно, спасибо.
|
Часовой пояс GMT +4, время: 07:39. |
|
« Предыдущая тема | Следующая тема » |
|
|