![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Есть в общем почти готовая игра, которая начинается с класса main. Решил сделать прелоадер, который надо было сделать ещё перед игрой, и чего-то даже не знаю, каким образом после того как прелоадер на первом кадре отработал, запустить на втором кадре класс main? Возможно это вообще делается по другому, и было бы не плохо узнать как именно).
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 1,764
|
не лучший мануал: http://www.8bitrocket.com/2008/04/22...-in-flash-cs3/
__________________
а за окном атлантический океан! |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
В смысле отдельный? Я наверное что-то элементарное сейчас пропускаю, но реально что-то не могу понять.
Сам класс main должен быть на втором кадре ведь, если он будет на первом, то он начнет сразу загружать все мувики использующиеся там, и прелоадер даже если будет в начале появится только после того, как весь main загрузится. На первом кадре проверяется общее количество загруженных байт и общее их количество, и если совпадает то переход на второй кадр, а на втором кадре код, чтобы запустить класс main и начать игру. Просто Вы наверное какой-то другой способ спрашиваете, который я не понял). Цитата:
|
|
|||||
|
Main
package { import flash.display.Sprite; [SWF(width = "800", height = "600", frameRate = "30")] /** * @author SlavaRa */ [Frame(factoryClass="Preloader")] public final class Main extends Sprite { public function Main():void { super(); } } } package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.utils.getDefinitionByName; /** * @author SlavaRa */ public class Preloader extends MovieClip { public function Preloader() { super(); this.configureStage(); this.addListeners(); //TODO: this.showAsset(); } private function configureStage():void { super.stage.scaleMode = StageScaleMode.NO_SCALE; super.stage.align = StageAlign.TOP_LEFT; } private function addListeners():void { super.addEventListener(Event.ENTER_FRAME, this.onSuperEnterFrame); super.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onIoError); super.loaderInfo.addEventListener(ProgressEvent.PROGRESS, this.onProgress); } private function onSuperEnterFrame(event:Event):void { if (super.currentFrame == super.totalFrames) { super.currentFrame; super.stop(); this.removeListeners(); //TODO: this.hideAsset(); this.startup(); } } private function onIoError(event:IOErrorEvent):void { trace("error:", event.text); } private function onProgress(event:ProgressEvent):void { //TODO: this.updateAsset(); } private function removeListeners():void { super.removeEventListener(Event.ENTER_FRAME, this.onSuperEnterFrame); super.loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, this.onIoError); super.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, this.onProgress); } private function startup():void { const c:Class = getDefinitionByName("Main") as Class; super.addChild(DisplayObject(new c())); } } }
__________________
местонахождение |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
СлаваRa, попробовал, покопался в инете, вроде и код почти такой же как у Вас везде, всё должно работать, но почему-то класс main сам себе так дальше и загружается, будто я ничего и не менял.
main: [Frame(factoryClass="preloader")] //переменные public class main extends MovieClip { public function main() { //функции и т.д. } } //и тут функции package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.utils.getDefinitionByName; /** * ... * @author Turbo-Dizel */ public class preloader extends MovieClip { private var BTN:MovieClip = new btn(); public function preloader() { addChild(BTN); BTN.x = 300; BTN.y = 300; BTN.addEventListener(MouseEvent.CLICK, clickb); } function clickb():void { var mainClass:Class = Class(getDefinitionByName("main")); var mainClassObj:Object = new mainClass(); addChild(mainClassObj as DisplayObject); } } } |
|
|||||
|
Если бы все было также, то и работало бы как надо, какой-то странный у вас подход к оформлению кода(.
__________________
местонахождение |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Цитата:
Он же по идее ждать моего клика должен. А что не так с оформлением кода?) |
|
|||||
|
Отдельным swf файлом вообще. Это нормальная практика, когда делают небольшой swf чисто для загрузки другого. И не нужно будет никаких фактори классов или второго кадра.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Этот код что, компилится? Где аргументы функции?
А Вы точно сделали preloader документ-классом?
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:19. |
|
|
« Предыдущая тема | Следующая тема » |
|
|