Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   [BUG] Image, SWFLoader не грузят файлы на Маке (http://www.flasher.ru/forum/showthread.php?t=94410)

__i 11.04.2007 16:42

[BUG] Image, SWFLoader не грузят файлы на Маке
 
Image, SWFLoader не грузят файлы на Маке, если приложение работает локально (делалось приложение в цинке для Мака).

Вероятно буг связан с SWFLoader, который невено колбасит строку для линка
код SWFLoader, метод loadContent (начиная со строки 1261) и мои коменты
Код:

.......
if (!(url.indexOf(":") > -1 || url.indexOf("/") == 0 || url.indexOf("\\") == 0))
                        {
                                var rootURL:String;
                                if(SystemManagerGlobals.bootstrapLoaderInfoURL!=null && SystemManagerGlobals.bootstrapLoaderInfoURL!="")
                                        rootURL = SystemManagerGlobals.bootstrapLoaderInfoURL;
                                else if (root)
                                        rootURL = root.loaderInfo.url;
                                else if (systemManager)
                                        rootURL = DisplayObject(systemManager).loaderInfo.url;

                                if (rootURL)
                                {
                                        var lastIndex:int = Math.max(rootURL.lastIndexOf("\\"), rootURL.lastIndexOf("/"));       
//тут индусы наверное забыли, что у мака то разделители  каталогов ":"
//и локальный путь будет содержать не слеши, а ":".
//поэтому у нас получаеться неверный путь к картинке
//естетсвенно мы получаем мега болт вместо имаджа. 



                                  if (lastIndex != -1)
                                                url = rootURL.substr(0, lastIndex + 1) + url;
                                }
                        }
.......

Решение этой проблемы (не идеально но нас пока устраивает):

Передаем в сурс Image полный путь к картинке, который получам так
Код:

link = mdm.Application.path + [относительный путь к картинке]
mdm.Application.path - это цинковая функция возвращающая каталог приложения, но можно выдегривать путь и без нее из
Application.application.url обрезая имя файла в конце.

etc 11.04.2007 16:51

Очередной косяк Flex-а. Кстати, локальный путь на маке может быть слешами. Не видел у себя двоеточий.

__i 11.04.2007 17:14

Кстате если таки поставишь себе Flex на Мак то поставь там брейкпоинт и посмотри чему равен rootURL, так для интереса)

etc 11.04.2007 17:42

Да у меня тут виндовый Flex коньки отбросил, не хочет работать ни с какой версией дебагового плеера.

Reijii 12.04.2007 13:36

Цитата:

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

в нашей ситуации, и на тех маках, что тестили, пути были через ":", хотя может это уже завязанно на Zink. :) вообщем be careful people :)

MyChemic 09.06.2008 21:42

никто не смог победить этот баг? а то на винде смотрел, там все ок, а на маке ни в какую не хочет грузить картинки по заданному пути, а из своей папки грузит(((

пути картинок трейсил, там все ок

ex.image 10.06.2008 11:09

хмм так грузит )
Код:

<mx:Image source="file:////Users/stanislav/Pictures/back.jpg"/>
Проверял на AIR.
или я не так что то понял?

MyChemic 10.06.2008 11:53

ой, спасибо, дома попробую

rain_heart 18.06.2008 18:58

может так
 
вот придумал такой способ:
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
            <mx:Script>
        <![CDATA[
                        import flash.display.*;
                        import flash.media.*;
                        import flash.events.*;
                        import flash.net.*;
                       
                        var _urlSWF:String = "swf/testAS3.swf"//имя загружаемой SWF и путь, локальная папка swf
                        var _rMovieSWF:MovieClip = new MovieClip();//мувиклип в который будем грузить (можно думаю и без него)
                       
                        public function PlaySWF():void
                        {
                                var _loaderSWF:Loader = new Loader();
                                var _urlReq:URLRequest = new URLRequest(_urlSWF);
                                _loaderSWF.load(_urlReq);
                                _loaderSWF.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadSWFComplite);
                        }
                        public function onLoadSWFComplite(e:Event):void
                        {
                                _rMovieSWF = e.target.content as MovieClip;
                                _mySWFLoader.addChild(_rMovieSWF);//добавляем в SWFLoader наш загруженный мувиклип
                                _mySWFLoader.addEventListener(Event.ENTER_FRAME, onEterFrameSWF);//смотрим текущий кадр
                        }
                       
                        public function onEterFrameSWF(e:Event):void
                        {
                                _myText.text=_rMovieSWF.currentFrame.toString();
                        }
                       
        ]]>
    </mx:Script>
            <mx:SWFLoader width="310" height="96" id="_mySWFLoader" initialize="PlaySWF();"/>
            <mx:Text width="149" id="_myText" text="sds" y="104"/>
       
</mx:Application>

Идея в том что грузим swf средствами флеша а точнее класса Loader и передаем его объекту SWFLoader.
Тут еще добавленно текстовое поле которое показывает текущий кадр swf-ки
С картинками тоже будет работать
тестовый SWF ролик был скомпилирован для AS3 для AS2 по идее тоже должно работать только текущий фрейм показывать не будет так как там после загрузки у нас не [movieclip object] а что то типа [AVM1Movie]


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

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