![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 14
|
Пытаюсь сделать внутренний прелоадер чисто средствами AS3 без Flash IDE. Вложил изображение размером 14 мб так вот сама линия прогресса не отображается, а есть лишь белый экран. Тестировал прелоадер залив на Dropbox.
Помимо этого возникает пара проблем: 1. Когда используешь мета тег [Frame], не работает тег [SWF], т.е. не изменяется ширина и высота экраны, цвет бэкграунда. 2. Когда создаешь проект, то приходится класс прелоадера переносить в отдельный пакет, иначе выходит ошибки при компиляции "Error 1065: Переменная Main не определена." Но в том же проекте, после создания отдельного пакета для класса прелоадера, и повторном удалении пакета и перемещением его рядом с основным классом приложения, ошибка перестает выходить. Незнаю наверное какой-то баг. Конфигурация: IDE: FlashBuilder 4.7 Версия Flash Player Debug: 11.4.402.265 SDK: 4.6 Собственно вот код. package example { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; /** * Основной класс приложения */ [SWF(width="640", height="480", backgroundColor="#FF0000", frameRate="60")] [Frame(factoryClass="ExamplePreloader")] public class Main extends Sprite { [Embed(source="../assets/Andromeda.jpg")] private var Asset:Class; public function Main() { if (stage == null) { addEventListener(Event.ADDED_TO_STAGE, initialize); } else { initialize(); } } private function initialize(event:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, initialize); trace("Preloader::initialize()"); var asset:Bitmap = new Asset(); addChild(asset); } } } package example { public class ExamplePreloader extends Preloader { public function ExamplePreloader() { className = "Main"; super(); } override public function update(aPercent:Number):void { super.update(aPercent); trace("Loading:", aPercent * 100); } override public function completed():void { super.completed(); trace("Loading is completed!"); } } } package example { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Shape; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.BitmapFilterQuality; import flash.filters.GlowFilter; import flash.utils.getDefinitionByName; public class Preloader extends MovieClip { public var className:String; private var _topBar:Shape; public function Preloader() { stop(); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; addEventListener(Event.ENTER_FRAME, enterFrameHandler); _topBar = new Shape(); _topBar.filters = [new GlowFilter(0xFFFFFF, .4, 13, 13, 2, BitmapFilterQuality.HIGH)]; addChild(_topBar); } protected function enterFrameHandler(event:Event):void { if (framesLoaded == totalFrames) { completed(); } else { update(root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal); } } public function completed():void { graphics.clear(); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); nextFrame(); initialize(); } public function update(aPercent:Number):void { graphics.clear(); _topBar.graphics.beginFill(0xC2758B, 1); _topBar.graphics.drawRect(0, stage.stageHeight / 2 - 10, stage.stageWidth * aPercent, 20); _topBar.graphics.endFill(); } protected function initialize():void { var mainClass:Class = Class(getDefinitionByName(className)); if (mainClass) { var app:Object = new mainClass(); addChild(app as DisplayObject); } } } } Если поменять document class на Preloader или ExamplePreloader выходят ошибки: "ArgumentError: Error #1507: Аргумент name не может быть "null". at global/flash.utils::getDefinitionByName() at example::Preloader/initialize()[/Users/gadzimari/Documents/Adobe Flash Builder 4.7/preloader/src/example/Preloader.as:61] at example::Preloader/completed()[/Users/gadzimari/Documents/Adobe Flash Builder 4.7/preloader/src/example/Preloader.as:48] at example::Preloader/enterFrameHandler()[/Users/gadzimari/Documents/Adobe Flash Builder 4.7/preloader/src/example/Preloader.as:35]" Ещё такой вопрос почему при добавлении изображения тегом [Embed] копия картинки вместе с папкой, где она расположена, появляется в папке bin-debug? Буду благодарен за помощь. P.S. Просьба не отсылать на сторонние сайты для ознакомления с этой темой, т.к. до того как создавать тему я прочитал массу постов и блогов по этой теме, но ничего не помогло. Последний раз редактировалось gadzhimari; 07.10.2012 в 23:44. |
![]() |
Часовой пояс GMT +4, время: 23:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|