Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   На слабой машине не загружаются картинки (http://www.flasher.ru/forum/showthread.php?t=101660)

vvk80 25.09.2007 15:22

На слабой машине не загружаются картинки
 
Уважаемые форумчане!

Занялся вот тут тестированием своего небольшого проекта и выяснилось, что на слабой машине (PIII, 750, 256ОЗУ) почему-то не подгружаются некоторые картинки (примерно 100X100пикселей). Причем прелоадер срабатывает нормально, показывает 100% и все, начинается анимация, на сцене висит только прелоадер.

Из этого я понимаю, что почему-то не срабатывает событие onComplete... Но почему??? Как мне это все отдебажить? (на слабой машине Flash 9 не стоит).

На том компьютере, где проект разрабатывался - все ок, никакокого намека на проблему - все летает...

Помогите, пожалуйста, понять в чем дело и отловить эту ошибку...

Заранее спасибо!

BlooDHounD 25.09.2007 16:01

Вы хотите, что все купили себе такие машины, поставили на них 9й флэш, а потом чисто за счёт своих экстрасенсорных способностей воспроизвели ваш код?

vvk80 25.09.2007 16:08

Я просто думал, что эту проблемо можно как-нибудь быстро решить

вот код loaderа
package
Код:

package
{
  import flash.display.*;
          import flash.text.*;
        import flash.events.*;
        import flash.net.*;
        import flash.geom.*;
        import flash.errors.*;
       
        public class BaseClass extends Sprite
        {
                //the BaseClass in the base class for all loadable images
                protected var Container:Sprite = new Sprite(); //maain parent container fot this class
                protected var imgContainer:Sprite = new Sprite(); //container for ico image
               
                private var progress_txt:TextField = new TextField(); // the implementation of the preloader // to do: make a graphic a preloader
               
                //trying graphic implementation of the preloader
                //to do make preloader as customizable as possible
                private var preloader:Shape;
                private var preloader2:Shape;
                               
                private var loadComplete:Event;
                protected var icoPicURL:String;
               
                public function BaseClass(cont:Sprite, strTarget:String):void
                {
                        this.Container = cont;
                        this.icoPicURL = strTarget;
                        trace("Base class ContructorCalled");
                }
               
                protected function loadImg(container:Sprite, target:String):void
                {
                        var contentContainer:Sprite = new Sprite();
                        contentContainer.name = "Content";
                       
                        try
                        {
                                var swfLoader:Loader = new Loader();
                                var swfUrl:String = target;
                                var swfUrlReg:URLRequest = new URLRequest(swfUrl);
                                swfLoader.load(swfUrlReg);
                        }
                        catch(e:IOError)
                        {
                                trace(e.message);
                        }
                        swfLoader.contentLoaderInfo.addEventListener(Event.OPEN, showPreloader);
                        swfLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress);
                        swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
                       
                        function showPreloader(evt:Event):void
                        {
                                progress_txt.autoSize = TextFieldAutoSize.LEFT;
                                preloader = new Shape();
                                preloader.graphics.beginFill(0xFFFFFF);
                                preloader.graphics.lineStyle(0,0XFFFFFF);
                                preloader.graphics.drawRect(0,40,100,10);
                                preloader.graphics.endFill();
                                imgContainer.addChild(preloader);
                               
                                preloader2 = new Shape();
                                preloader2.graphics.beginFill(0xC6C6CF);
                                preloader2.graphics.lineStyle(0,0xFFFFFF);
                                preloader2.graphics.drawRect(0,40,100,10);
                                preloader2.graphics.endFill();
                                preloader2.scaleX = 0;
                                imgContainer.addChild(preloader2);
                               
                               
                                imgContainer.addChild(progress_txt);
                        }
                        function showProgress(evt:ProgressEvent):void
                        {
                                var _result:uint = (evt.bytesLoaded*100)/evt.bytesTotal
                                preloader2.scaleX = _result/100;
                                progress_txt.y = 50;
                                progress_txt.x = 35;
                                progress_txt.text = _result.toString() +"%"; //"loaded:"+evt.bytesLoaded+" from "+evt.bytesTotal;
                        }
                       
                        function swfLoaded(event:Event):void
                        {
                                imgContainer.removeChild(progress_txt);
                                imgContainer.removeChild(preloader);
                                imgContainer.removeChild(preloader2);
                                contentContainer.addChild(swfLoader.content);
                                container.addChild(contentContainer);
                                container.buttonMode = true;
                                loadComplete = new Event("loadComplete", true);
                                dispatchEvent(loadComplete);
                                //container.mouseChildren = false;
                    }
                }
               
                public function initImg(_xCoord:Number, _yCoord:Number):void
                {
                        trace("initImg function of the BaseClass called");
                        loadImg(imgContainer,icoPicURL);
                        Container.addChild(imgContainer);
                        imgContainer.cacheAsBitmap = true;
                        imgContainer.x =_xCoord;
                        imgContainer.y =_yCoord;
                }
                public function removeImg():void
                {
                        Container.removeChild(imgContainer);
                }
        }
}

В любом случае, может кто-нибудь подскажет, как произвести полноценный debug на удаленной машине без установленного flash9? Если это возможно, конечно...

Парадокс, но только что протестировал тот же самый проект на той же самой слабой машине, но в этот раз запускал все со своего веб сайта... работает все также медленно, но по крайней мере все картинки появляются... мистика...

BlooDHounD 25.09.2007 18:05

Container - это класс? если нет, то почему с большой буквы назван?
функции showPreloader, showProgress, swfLoaded могут быть удалены мусорщиком. на них нигде нет ссылок кроме как в самом диспетчере. я не уверен, что они по идеи могут умереть. почему нельзя сделать их методами класса?

vvk80 25.09.2007 20:39

Цитата:

Сообщение от BlooDHounD
Container - это класс? если нет, то почему с большой буквы назван?
функции showPreloader, showProgress, swfLoaded могут быть удалены мусорщиком. на них нигде нет ссылок кроме как в самом диспетчере. я не уверен, что они по идеи могут умереть. почему нельзя сделать их методами класса?

Огромное спасибо за замечания! Обязательно исправлю...

etc 25.09.2007 20:55

Интересно, код для девятого плеера и тут же написано, что 9-ый плеер не установлен на машине. Конечно вы ничего не увидите.

vvk80 26.09.2007 12:41

Цитата:

Сообщение от __etc
Интересно, код для девятого плеера и тут же написано, что 9-ый плеер не установлен на машине. Конечно вы ничего не увидите.

данный код запускается через Windows Projector, т.е. у меня есть Windows Projector .exe файл, в который по мере необходимости подгружаются другие ролики (как AS 3, так и AS 2), которые (только AS3) и используют этот класс для загрузки в себя картинок... причем только один файл глючит, все остальные срабатыывают без проблем...

У меня складывается впечатление, что flash просто почему-то в рэндом порядке не дожидается окончательной загрузки картинки, а начинает двигать анимаацию дальше, хотя у меня четко все вписано в действия OnComplete


Часовой пояс GMT +4, время: 14:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.