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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 13.05.2011, 16:27
elzone вне форума Посмотреть профиль Отправить личное сообщение для elzone Найти все сообщения от elzone
  № 1  
Ответить с цитированием
elzone
 
Аватар для elzone

Регистрация: Sep 2004
Сообщений: 86
По умолчанию производительность приложения при работе с большими картинками

Здравствуйте
делаю сайт:
http://elzone.net/test/sites/inovatio/makarskaya/

наблюдаются тормоза при смене бэковых картинок (меняются alpha, scaleX, scaleY). этот бэк появляется после нажатия на enter site

может кто подскажет как решить проблему?


код который использую для прокрутки изображений

Код AS3:
public class PicBgRotator extends Sprite{
 
		public var _loaders:Array = [];
		private var _urls:Array = [];
		private var _loaded:Array = [];
		private var _index:uint = 0;
 
		private var _currentImage:Sprite;
		private var _prevImage:Sprite;
 
		private const _SCALE:Number = 1.07;
 
		private var _timeout:uint;
 
		private var _tw1:TweenLite;
		private var _tw2:TweenLite;
 
		private var _imageAlpha:Number;
		private var _updated:Boolean;
 
		private var _completlyLoaded:Boolean = false;
 
		private var _stopped:Boolean = false;
 
		public static var continueLoading:Boolean = true;
 
		public function PicBgRotator(xml:XMLList, autoRun:Boolean = true) {
			for each(var img in xml.item) {
				var l:Loader = new Loader();
				l.contentLoaderInfo.addEventListener(Event.COMPLETE, _onImageLoaded);
 
				_loaders.push(l);
				_urls.push(new URLRequest(img));
				_loaded.push(false);
			}
			if (autoRun)
				loadNextImage()
 
			addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
 
		}
 
		public function loadNextImage():LoaderInfo {
 
			var info = _loaders[_index].contentLoaderInfo;
			_loaders[_index].load(_urls[_index]);
			_loaders[_index].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,_onIOError);
 
			return info;
		}
 
		override public function set alpha(val:Number):void {
			super.alpha = val;
			if (!val && _prevImage && (_prevImage.parent == this))
				removeChild(_prevImage);
		}
 
		private function _onIOError(e:IOErrorEvent):void {
 
		}
 
		private function _onImageLoaded(e:Event):void {
 
			_loaded[_index] = true;
 
			if (stage)
				_addImage(_index);
 
			for (var i:uint = 0; i < _loaded.length; i++)
				if (!_loaded[i])
					return;
 
			_completlyLoaded = true;
		}
 
		private function _onAddedToStage(e:Event):void {
 
			removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
 
			if(_loaded[_index])
				_addImage(_index);
 
 
		}
 
		private function _addImage(i:uint):void {			
 
			if (_prevImage && (_prevImage.parent == this)) {
				removeChild(_prevImage);
				TweenLite.killTweensOf(_prevImage);
			}
 
			if (_currentImage)
				_prevImage = _currentImage;
 
			var img:Bitmap = _loaders[i].contentLoaderInfo.content;
 
			img.y = 0;
			img.smoothing = true;
 
			var sp:Sprite = new Sprite();
			sp.addChild(img);
 
			sp.y = 0;
 
			_currentImage=sp;
			addChild(_currentImage);
 
			_imageAlpha = 1;
			_updated = false;
 
			_imageAlpha = 1;
			_tw1=TweenLite.from(this, 4, { imageAlpha:0, ease:Linear.easeOut, delay:0.2, onComplete:_onTweenComplete} );
			if (_prevImage) {
				_tw2=TweenLite.from(_currentImage, 4, { scaleX:_SCALE, scaleY:_SCALE, ease:Linear.easeOut} );
			}
			_index = i + 1;
		}
 
		public function set imageAlpha(val:Number):void {
			_currentImage.alpha=val
		}
 
		public function get imageAlpha():Number {
			return _imageAlpha;
		}
 
		public function pause():void {
			_stopped = true;
		}
 
		public function resume():void {
			_stopped = false;
		}
 
		private function _handleEnterFrame(e:Event):void {
 
		}
 
		private function _onTweenProgress():void {
 
		}
 
		private function _onTweenComplete():void {
			_timeout = setTimeout(_nextImage, 7000);
		}
 
		private function _nextImage():void {
 
			clearTimeout(_timeout);
 
			if (!(continueLoading || _completlyLoaded) || _stopped) {
				_timeout = setTimeout(_nextImage, 5000);
				return;
			}
 
			var key:Boolean = true;
			var i:int = 0;
 
			while ((key = _loaded[i]) && (++i < _loaded.length) )
			trace(_loaded[i])
			if(!key)
				loadNextImage();
			else
				_addImage(_index %= _loaded.length);
		}		
	}

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

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

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


 


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


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