|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
А событие Event.INIT слушаете? Вообще, swf слушают по INIT, потому, что это момент когда первый кадр загружен. Впрочем и комплете тоже должно быть. Попробуйте в файлах политик открыть полный доступ, то есть указать :
чтобы убедиться в том, что проблема не в имени домена если нужный файл, для загрузки, находится не в корне сайта crossdomain.xml поправьте: |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
|
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
Цитата:
fish_r, всё это делал. Всё равно тормозит и не диспатчится. Ещё один вопрос: Когда грузится второй раз - SWF берётся из кэша, что не очень хорошо. Не знаете как решить данную проблему? |
|
|||||
Не уверен, что swf повторно берётся из кеша. Но чтобы избежать кеширования, обычно, немного видоизменяют запрос, например, добавляют случайные аргументы. Тогда точно не закешируется.
Последний раз редактировалось fish_r; 14.04.2011 в 20:17. |
|
|||||
была же открывашка файлов в обход кроссдомена где-то на форуме, картинки грузятся откуда угодно, поищите на форуме, работает железно.
А про потерю качества при траннсформации картинки - всю плешь проел, так и не нашел решения может, плохо искал... Можно попробовать фильтрами пикселбендера, но визуально потеря все равно есть |
|
|||||
ой, не получается вложить as файл
так напишу package{ import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; import flash.display.*; import flash.geom.Matrix; import flash.text.TextField; public class picLoaderNoCrossdomain extends MovieClip { private var ThisLoader; private var picPath:String; private var loader:Loader; private var req:URLRequest; private var par:*; private var DrawedBitmap:Bitmap; private var BD:BitmapData; private var BoundsObject:Object; private var Preloader:*; private var scaleMatrix:Matrix; private var BMP:Bitmap; public function picLoaderNoCrossdomain (path:String,main:*,bObject,preload:*) { ThisLoader=this; par=main; picPath=path; BoundsObject=bObject; Preloader=preload; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoaded); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, this.handler_progress); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); //trace("loader load "+picPath); var lc:LoaderContext = new LoaderContext(); lc.checkPolicyFile = true; loader.load(new URLRequest(picPath),lc); } public function loadPicture(path:String):void{ picPath=path; loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoaded); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, ThisLoader.handler_progress); loader=null; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoaded); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, ThisLoader.handler_progress); var lc:LoaderContext = new LoaderContext(); lc.checkPolicyFile = true; req=new URLRequest(picPath); loader.load(req,lc); } public function destroyLoad():void{ loader.unload(); try{ loader.close(); }catch(someError:Error){ trace("no need to close"); } ThisLoader.loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoaded); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoaded); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, ThisLoader.handler_progress); } private function onPicLoaded (e:Event):void{ ThisLoader.loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoaded); ThisLoader.loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.handler_complete); this.loader.loadBytes(this.loader.contentLoaderInfo.bytes, new LoaderContext(false, ApplicationDomain.currentDomain)); } private function handler_complete(event:Event):void { //trace("PIC loaded "+BoundsObject); var bitmap:BitmapData = new BitmapData(loader.width, loader.height, true); bitmap.draw(loader); DrawedBitmap = new Bitmap(bitmap); if(Preloader!=null){ if(Preloader is TextField){ Preloader.text=""; } } ThisLoader.loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, this.handler_complete); if(BoundsObject!=null){ resizePicture(); }else{ par.dispatchEvent(new CustomEvent("fotoOpened",DrawedBitmap,null,null)); } } private function handler_progress(event:ProgressEvent):void{ if(Preloader!=null){ if(Preloader is TextField){ Preloader.text=Math.round(event.bytesLoaded/event.bytesTotal*100)+"%"; }else{ } } } private function errorHandler(event:IOErrorEvent):void{ //eventsReceiver.dispatchEvent(new CustomEvent("ioError",event.text,null,null)); trace("!!!! IOErrorHandler "+event.text); if(Preloader!=null){ if(Preloader is TextField){ Preloader.text=""; }else{ } } } private function resizePicture() { var tmpBitmap:Bitmap=new Bitmap(); var CountedWidth:Number=DrawedBitmap.width; var CountedHeight:Number=DrawedBitmap.height; var ScaleRatio:Number=1; var tmpMatrix:Matrix=new Matrix();// матрица ресайза по ширине var ConcatMatrix=new Matrix(); // матрица ресайза по высоте (если понадобится) if (DrawedBitmap.width>BoundsObject.w) { ScaleRatio=DrawedBitmap.width/BoundsObject.w; tmpMatrix.scale(1/ScaleRatio,1/ScaleRatio); CountedWidth=Math.round(DrawedBitmap.width/ScaleRatio); CountedHeight=Math.round(DrawedBitmap.height/ScaleRatio); } if (CountedHeight>BoundsObject.h) { ScaleRatio=CountedHeight/BoundsObject.h; CountedWidth=Math.round(CountedWidth/ScaleRatio); CountedHeight=Math.round(CountedHeight/ScaleRatio); ConcatMatrix.scale(1/ScaleRatio,1/ScaleRatio); } tmpMatrix.concat(ConcatMatrix); var tmpBitmapData:BitmapData=new BitmapData(Math.round(CountedWidth),Math.round(CountedHeight),true,0xFF0000); //var tmpBitmapData:BitmapData=new BitmapData(604,300,false,0xFF0000); tmpBitmapData.draw(DrawedBitmap,tmpMatrix); BMP=new Bitmap(tmpBitmapData); trace("BMP w="+BMP.width+" h="+BMP.height); BMP.smoothing=true; ///////////////////////////////////////////////////////// par.dispatchEvent(new CustomEvent("fotoOpened",BMP,null,null)); } } } Чуши в нем много (моей), простите. Последний раз редактировалось djyamato; 15.04.2011 в 07:27. |
|
|||||
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
Ребята, вот эта штука реально помогла:
И событие complete диспатчится и картинка не теряет качество. Спасибо, всем. Проблема решена. |
Часовой пояс GMT +4, время: 09:30. |
|
« Предыдущая тема | Следующая тема » |
|
|