![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 3
|
package { import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.display.LoaderInfo; import flash.display.Loader; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.URLRequest; public class Main extends Sprite { private var _game_width:int = 800; private var _game_height:int = 600; private var _loader:Loader; private var _url_request:URLRequest; private var _progress_bar:Shape; private var _progress_bar_line:Sprite; private var _movie:Sprite; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point //Защита от ресайза stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; //Загружаем игрушку _url_request = new URLRequest("адрес swf"); _loader = new Loader(); _loader.load(_url_request); _loader.contentLoaderInfo.addEventListener(Event.OPEN, onOpenLoader); _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressLoader); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete); } //отрисовываем контейнер прогресс-бара private function onOpenLoader(evt:Event):void { _progress_bar = new Shape(); _progress_bar.graphics.beginFill(0x00ffff, 1); _progress_bar.graphics.drawRect((game_width-300)/2, (game_height-50)/2, 300, 50); _progress_bar.graphics.endFill(); addChild(_progress_bar); } //отрисовываем прогресс-бар private function onProgressLoader(evt:Event):void { if (_progress_bar_line != null) { removeChild(_progress_bar_line); } _progress_bar_line = new Sprite(); _progress_bar_line.graphics.beginFill(0xff00ff, 1); _progress_bar_line.graphics.drawRect((game_width - 300) / 2, (game_height - 50) / 2, (300 * _loader.contentLoaderInfo.bytesLoaded / _loader.contentLoaderInfo.bytesTotal), 50); _progress_bar_line.graphics.endFill(); addChild(_progress_bar_line); } //удаляем прогресс-бар, отображаем игрушку, освобождаем ресурсы private function onLoaderComplete(evt:Event):void { removeChild(_progress_bar); removeChild(_progress_bar_line); _progress_bar = null; _progress_bar_line = null; _url_request = null; //_loader.width = _game_width; //_loader.height = _game_height; _movie = Sprite(_loader.content); _loader = null; addChildAt(_movie, 0); }; //геттеры public function get game_width():int { return _game_width; } public function get game_height():int { return _game_height; } } } //отрисовываем контейнер прогресс-бара private function onOpenLoader(evt:Event):void { _progress_bar = new Shape(); _progress_bar.graphics.beginFill(0x00ffff, 1); _progress_bar.graphics.drawRect((game_width-300)/2, (game_height-50)/2, 300, 50); _progress_bar.graphics.endFill(); addChild(_progress_bar); } //отрисовываем прогресс-бар private function onProgressLoader(evt:Event):void { if (_progress_bar_line != null) { removeChild(_progress_bar_line); } _progress_bar_line = new Sprite(); _progress_bar_line.graphics.beginFill(0xff00ff, 1); _progress_bar_line.graphics.drawRect((game_width - 300) / 2, (game_height - 50) / 2, (300 * _loader.contentLoaderInfo.bytesLoaded / _loader.contentLoaderInfo.bytesTotal), 50); _progress_bar_line.graphics.endFill(); addChild(_progress_bar_line); } объект вовсе пропадает. Нужно создать объект и изменять его, а не перерисовывать его каждый раз как я это делаю. Хэлпните, если сможете. |
|
|||||
|
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
Сначала добавь прогрессбар на экран, а потом меняй ему scaleX таким образом:
__________________
Нормально делай — нормально будет! Последний раз редактировалось tsarapkabel; 01.11.2011 в 14:01. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1. Надо было показать код, в котором "объект вовсе пропадает". Весь код, а не заведомо правильно написанное выражение. Кстати, почему +=1, независимо от количества байтов?))
2. В перерисоывании нет ничего плохого. Плохо зачем-то удалять прогрессбар, создавать снова. Зачем? Есть метод Graphics#clear(), а по сути и он тут не нужен – полоса ведь не может уменьшаться, можно тупо "наслаивать" поверх новый прямоугольник. Удалять то сам Шейп зачем?
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|