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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.12.2006, 01:51
Grrr13 вне форума Посмотреть профиль Отправить личное сообщение для Grrr13 Найти все сообщения от Grrr13
  № 11  
Ответить с цитированием
Grrr13

Регистрация: Nov 2006
Сообщений: 21
etc как раз идея в том и заключается чтобы не грузить всю панораму целиком,а общий вид,меньшего разрешения чем оригинал

Старый 20.12.2006, 02:30
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 12  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А я и говорю, что если этим занимается AS3, т.е. клиентская часть, то придёться грузить вообще всё.
Этим должна заниматься серверная часть. В простейшем случае php с GD библиотекой.

Старый 20.12.2006, 16:18
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 13  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
Цитата:
Сообщение от Grrr13
Идею понял,но это ведь изменяется не разрешение,а качество,т.е. это что-то типа компрессии (ну сжатия),а разве нет такой штуки в экшн скрипт как задание именно разрешения?! Может это вообще невозможно сделать....
Гхм... вчитайтесь в то что я написал. То что вы называете "компрессия" это и есть маленький оригинал, растянутый на большой размер. Т.е. делаем stream.close(); после загрузки первого уменьшеного оригинала. Если будет время, и это действительно необходимо - могу написать готовый класс.
__________________
А что я? Я сам в шоке!


Последний раз редактировалось ALiEN_2OO6; 20.12.2006 в 18:11.
Старый 20.12.2006, 16:20
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 14  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
Цитата:
Сообщение от __etc
А я и говорю, что если этим занимается AS3, т.е. клиентская часть, то придёться грузить вообще всё.
Этим должна заниматься серверная часть. В простейшем случае php с GD библиотекой.
Не обязательно грузить все, в этом и суть.
__________________
А что я? Я сам в шоке!

Старый 20.12.2006, 17:55
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 15  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
Вот на скорую руку накидал:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete = "initApp()">
<mx:Image x="10" y="10" width="711" height="606" id="myImage"/>

	<mx:Script>
        <![CDATA[

            public function initApp():void {
            	
            	
            	var a = new StreamLoader(new URLRequest('http://lab.orangeflash.eu/flex2/examples/partialImageloader/Image2.jpg'));
           		myImage.addChild(a);
           		//myImage.scaleX = 0.1;
           		//myImage.scaleY = 0.1;
            	
            }
            
        ]]>
    </mx:Script>

	
</mx:Application>
Код:
package
{
	import flash.display.Loader;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.system.LoaderContext;
	
	[Event(name = "complete", type="flash.events.Event")]
	[Event(name = "progress", type="flash.events.ProgressEvent")]
	[Event(name = "open", type="flash.events.Event")]
	[Event(name = "ioError", type="flash.events.IOErrorEvent")]
	
	public class StreamLoader extends Loader
	{
		protected var stream:URLStream = new URLStream();
		protected var bytes:ByteArray = new ByteArray();
		protected var cont:LoaderContext;
		
		import mx.core.UIComponent
		/**
		 * Constructor, creates new StreamLoader
		 * 
		 */
		public function StreamLoader(request:URLRequest = null)
		{
			if(request != null)
			{
				loadStream(request);
			}
		}
		/**
		 * Method, loads images as stream
		 * 
		 * @param	request		URLRequest
		 * @param	context		LoaderContext, default value is null
		 */
		public function loadStream(request:URLRequest, context:LoaderContext = null):void
		{
			cont = context;
			
			stream.load(request);
			
			stream.addEventListener(Event.COMPLETE,onStreamComplete);
			stream.addEventListener(ProgressEvent.PROGRESS,onStreamProgress);
			stream.addEventListener(Event.OPEN,onStreamOpen);
			stream.addEventListener(IOErrorEvent.IO_ERROR,onStreamIOError);
			stream.addEventListener(HTTPStatusEvent.HTTP_STATUS,onStreamHTTPStatus);
			stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onStreamSecurityError);
		}
		/**
		 * @private
		 */
		private function onStreamComplete(event:Event):void
		{
			updateBytes();
			dispatchEvent(new Event(event.type, event.bubbles, event.cancelable));
			
			setTimeout(confirmBytesLoaded,1);			
		}
		/**
		 * @private
		 */
		private function onStreamProgress(event:ProgressEvent):void
		{
			updateBytes();
			if(bytes.length > 20000)stream.close();
			dispatchEvent(new ProgressEvent(event.type, event.bubbles,
											event.cancelable, event.bytesLoaded, 
											event.bytesTotal));
			
		}
		/**
		 * @private
		 */
		private function onStreamIOError(event:IOErrorEvent):void
		{
			dispatchEvent(new IOErrorEvent(event.type, event.bubbles, event.cancelable, event.text));
		}
		/**
		 * @private
		 */
		private function onStreamSecurityError(event:SecurityErrorEvent):void
		{
			dispatchEvent(new SecurityErrorEvent(event.type, event.bubbles, event.cancelable, event.text));
		}
		/**
		 * @private
		 */
		private function onStreamHTTPStatus(event:HTTPStatusEvent):void
		{
			dispatchEvent(new HTTPStatusEvent(event.type, event.bubbles, event.cancelable, event.status));
		}
		/**
		 * @private
		 */
		private function onStreamOpen(event:Event):void
		{
			dispatchEvent(new Event(event.type, event.bubbles, event.cancelable));
		}
		/**
		 * @private
		 */
		private function updateBytes():void
		{
			stream.readBytes(bytes, bytes.length);
			if(bytes.length > 0)
			{
				loadBytes(bytes,cont);
			}
		}
		/**
		 * @private
		 * 
		 * Method confirms that all bytes loaded, and closes stream
		 */
		private function confirmBytesLoaded():void
		{
			updateBytes();
			stream.close();
		}
		
	}
}
В данном примере, я просто обрубаю поток, по достижении 20000 загруженных байт. Т.к. Евент срабатывает с разной периодичностью, рекомендую потыкать F5 в примере, и посмотреть что именно загружается в myImage. Поставленная задача решена. Единственное конечно надо это до ума довести, например, что бы четко срабатывал евент на определенном этапе, а не так как сейчас.
__________________
А что я? Я сам в шоке!

Старый 20.12.2006, 17:55
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 16  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
P.S. пронаблюдать работу - можно так же сниффером.
__________________
А что я? Я сам в шоке!

Старый 20.12.2006, 18:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 17  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Понятно, добавил одну строчку в класс Nirth-а
А то, что при этом нужно ещё ресайзить картинку до верных размеров, а?

Старый 20.12.2006, 18:13
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 18  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
Цитата:
Сообщение от __etc
Понятно, добавил одну строчку в класс Nirth-а
А то, что при этом нужно ещё ресайзить картинку до верных размеров, а?
Выше смотри в коде - там есть scaleX и scaleY. А вообще не это важно если честно, а то что можно загрузить картинку, без GD и PHP. в уменьшеном варианте. =)

P.S. на счет класса - выше есть линки, именно с ресурса Nirth-a так что думаю он не расстроится.
__________________
А что я? Я сам в шоке!

Старый 20.12.2006, 18:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 19  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Зависимость scaleX, scaleY нелинейна от кол-ва байт. Вот с этим и будут проблемы. Вообще, лучше конечно заюзать GD и Flash 8, сейчас это актуальнее.

Старый 20.12.2006, 18:48
ALiEN_2OO6 вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_2OO6 Найти все сообщения от ALiEN_2OO6
  № 20  
Ответить с цитированием
ALiEN_2OO6
 
Аватар для ALiEN_2OO6

Регистрация: Nov 2006
Сообщений: 25
Отправить сообщение для ALiEN_2OO6 с помощью ICQ
Если продолжить тему, то конечно ты прав - "лучше конечно заюзать GD и Flash 8", и scaleX scaleY тут не помогут.. Это только как пример.

Ну а вообще, конечно, если делать, то делать так:

1. Четко определять необходимый размер подгружаемых данных.
2. Вовремя, закрывать поток, по загрузке колличества байт из п.1
3. Распарсить полученный байтовый массив.

Пока не понятно как это сделать, если есть идеи, поделитесь. Если вообще тема актуальна. =)))
__________________
А что я? Я сам в шоке!


Последний раз редактировалось ALiEN_2OO6; 20.12.2006 в 19:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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