![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
В CS4 создал флэшку, и главным классом приложения у нее прописал класс Main - потом описал его. Все нормально, работает итд.
Решил прекрутить прелоадер Сходил на http://etcs.ru/blog/cs3/export_in_se...ame_flash_cs3/ почитал и сделал как там написано. Тоже все хорошо То есть я поменял главный класс приложения с Main на Preloader Прелоадер работает - когда все догружает он создает объект класса Main. Проблема в том, что если в теле конструктора Main написать trace("Main"); то в аутпуте выведется строка "Main" два раза. И различные глюки в приложении показывают, что объектов типа Main - две штуки. Весь код проверил раз 10 - сам руками я создают объект этот только в прелоадере. Неужели fla как-то запомнил что прошлым классом приложения был Main и его переглючило и он теперь создает и его и прелоадер? Попробовал по другом - создал новый проект - перенес туда кадры и библиотеку - не помогло. Помогите плз проект горит |
|
|||||
|
код в студию
|
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Все как тут http://etcs.ru/blog/cs3/export_in_se...ame_flash_cs3/
При этом в куче проектах это использую - нигде такого нет Preloader.as package { import flash.display.*; import flash.text.*; import flash.events.*; public class Preloader extends MovieClip { public static const ENTRY_FRAME:Number = 3; public static const DOCUMENT_CLASS:String = 'Main'; private var progressBar:Sprite; public static var Application:Preloader; public function Preloader() { super(); stop(); Application = this; stage.showDefaultContextMenu = false; stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; //stage.align = flash.display.StageAlign.TOP_LEFT; progressBar = getChildByName("ProgressBar") as Sprite; progressBar.scaleX = 0; loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); } private function progressHandler(event:ProgressEvent):void { var loaded:uint = event.bytesLoaded; var total:uint = event.bytesTotal; progressBar.scaleX = loaded/total; } private function completeHandler(event:Event):void { play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(event:Event):void { if (currentFrame >= Preloader.ENTRY_FRAME) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); stop(); main(); } } private function main():void { //var programClass:Class = loaderInfo.applicationDomain.getDefinition(Preloader.DOCUMENT_CLASS) as Class; //var program:Sprite = new programClass() as Sprite; var program:Main = new Main(); program.name = "Main"; stage.addChild(program); } } } |
|
|||||
|
а функция main в прелоадере сколько раз вызывается. Поставьте в ней трэйс... вот вам и 2 класcа Main
|
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Чтобы хоть как-то работало - пришлось ввести счетчик объектов и проверять его в конструкторе класса Main. Жесть.
Добавлено через 54 секунды Цитата:
Добавлено через 5 минут Мне кажется это IDE глючит - сейчас был косяк следующего рода у меня два разных проекта (лежат в разных папках) - но оба Fla называются Game и у каждого из них есть Main.as свой который они используют Я открыл оба флашника и оба мэина - и компильнул один из проекетов - проект подцепил вместо своего Main.as - мэин другого проекта 0_о и вывалил кучу ошибок. Перезапустил CS4 - все заработало |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Вы убили всю работу прелоадера, явно указав класс Main в Preloader. Можно было в таком случае вообще никаких прелоадеров не делать.
|
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Вы вот про эти строки?
Когда я писал так: var programClass:Class = loaderInfo.applicationDomain.getDefinition(Preloader.DOCUMENT_CLASS) as Class; var program:Sprite = new programClass() as Sprite; ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Значит Main инициализируется в embed-клипе, а этого происходить не должно. Нельзя переходить на кадр с embed-клипом, либо надо сделать два кадра в embed-клипе, остановить его на первом, а на втором разместить все необходимые элементы.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|