Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.04.2011, 19:17
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 21  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
А событие Event.INIT слушаете? Вообще, swf слушают по INIT, потому, что это момент когда первый кадр загружен. Впрочем и комплете тоже должно быть. Попробуйте в файлах политик открыть полный доступ, то есть указать :
Код:
<allow-access-from domain="*"/>
чтобы убедиться в том, что проблема не в имени домена

если нужный файл, для загрузки, находится не в корне сайта crossdomain.xml поправьте:

Код:
<?xml version="1.0" encoding="utf-8" ?>
<cross-domain-policy> 
	<site-control permitted-cross-domain-policies="all"/>
        <allow-access-from domain="www.mySite.com"/> 
</cross-domain-policy>

Старый 14.04.2011, 19:21
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 22  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Может так?
Код AS3:
loader.load(url, new LoaderContext(true));

Старый 14.04.2011, 19:43
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 23  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Цитата:
loader.load(url, new LoaderContext(true));
Вот это сейчас попробую.

fish_r, всё это делал. Всё равно тормозит и не диспатчится.

Ещё один вопрос: Когда грузится второй раз - SWF берётся из кэша, что не очень хорошо. Не знаете как решить данную проблему?

Старый 14.04.2011, 20:15
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 24  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Не уверен, что swf повторно берётся из кеша. Но чтобы избежать кеширования, обычно, немного видоизменяют запрос, например, добавляют случайные аргументы. Тогда точно не закешируется.


Последний раз редактировалось fish_r; 14.04.2011 в 20:17.
Старый 14.04.2011, 20:15
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 25  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Добавитьк урл рендомный параметр.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 15.04.2011, 06:14
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 26  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
была же открывашка файлов в обход кроссдомена где-то на форуме, картинки грузятся откуда угодно, поищите на форуме, работает железно.
А про потерю качества при траннсформации картинки - всю плешь проел, так и не нашел решения может, плохо искал...
Можно попробовать фильтрами пикселбендера, но визуально потеря все равно есть

Старый 15.04.2011, 07:01
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 27  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Картинки через Loader и так грузятся откуда угодно. Доступ к пикселям, только, через кроссдомен. Или нет?

Старый 15.04.2011, 07:24
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 28  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
ой, не получается вложить as файл
так напишу

Код AS3:
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));
 
		}
	}
}
Это я чуть переделал класс, для загрузки XML-я, кажется, выложенный на форуме (автора не помню, к сожалению) , картинки грузит откуда угодно и ресайзит
Чуши в нем много (моей), простите.


Последний раз редактировалось djyamato; 15.04.2011 в 07:27.
Старый 15.04.2011, 08:14
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 29  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
была же открывашка файлов в обход кроссдомена где-то на форуме
http://www.flasher.ru/forum/showthread.php?p=800092
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 15.04.2011, 14:04
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 30  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Ребята, вот эта штука реально помогла:
Код AS3:
loader.load(url, new LoaderContext(true));
И событие complete диспатчится и картинка не теряет качество.
Спасибо, всем. Проблема решена.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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