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

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

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

Регистрация: Oct 2009
Сообщений: 92
По умолчанию Притормаживает swf подгружаемый через xml

Помогите если сможете.

Дело в том что в галерею грузятся через xml и jpg и swf и проявляются плавно через alpha. И иногда происходит притормаживание погружаемых swf, то есть они не становятся до конца яркими. Помоте разобраться в чем дело.
Код AS3:
import flash.display.*;
import flash.events.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
 
//Загрузчик для загрузки XML
var xmlLoader:URLLoader;
//когда данные из файла загружены присвоим их переменной
var myXML:XML;
//для определения каждого объекта данных в XML
var xmlList:XMLList;
//содержит URL 
var urlRequest:URLRequest;
//контейнер для фоток
var photos:Sprite;
//Кол-во фоток в альбоме
var foto_num:int;
//ТАЙМЕР 
var minuteTimer:Timer; 
//Твин
var myTween:Tween;
//регулятор скорости альфаканала
var alpha_speed:int;
 
//Функция создания и назначения элементов  
 
//загружаем XML
xmlLoader=new URLLoader();
//когда XML загрузиться вызовем функцию parseXML
xmlLoader.addEventListener(Event.COMPLETE,parseXML);
//загружаем файл
xmlLoader.load(new URLRequest("album.xml"));
//xmlLoader.load(new URLRequest("/images/swf/album.xml"));
//производим запрос ссылки
urlRequest=new URLRequest();			
 
//разбираем XML, когда он загрузился
function parseXML(event)
{
	//создаем объект XML
	myXML=new XML(event.target.data);
	//xmlList=myXML.albums;
	xmlList=myXML.photo;
	//количество 
	foto_num=xmlList.length()
	//trace('timer=' + myXML.timer);
	alpha_speed=int(myXML.slide);			
	//загружаем фото
	load_photo();
}
 
// загрузка фотографий
function load_photo():void
{
	var Pict_loader:Loader = new Loader();
	var NM:String;
	var num:int;
	//создаем слой для фоток
	photos=new Sprite();
	addChild(photos);
	//настраиваем события для загрузчика
	configureListeners(Pict_loader.contentLoaderInfo);
	//загружаем фото
	num=Math.ceil(Math.random()*foto_num)
	NM=myXML.photo[num-1];
	//trace(num+ ' - ' + NM );
	Pict_loader.load(new URLRequest(NM));
	Pict_loader.name="photo";
	photos.addChild(Pict_loader);
	//Создаем таймер
	minuteTimer = new Timer(1000, int(myXML.timer));
	minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
    minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
	//стартуем таймер
    minuteTimer.start(); 
}
function configureListeners(dispatcher:IEventDispatcher):void 
	{dispatcher.addEventListener(Event.COMPLETE, completeHandler);}
 
//Процедуры обработки событий загрузчика
function completeHandler(event:Event):void 
	{var myTween:Tween = new Tween(photos, "alpha", Strong.easeOut, 0, 1, alpha_speed, true);}
 
function onTick(event:TimerEvent):void
	{/*trace("таймер:" + event.target.currentCount);*/} 
 
function onTimerComplete(event:TimerEvent):void
{
	//trace("ТАЙМЕР ЗАВЕРШИЛСЯ - грузим следующую фотку"); 
	myTween = new Tween(photos, "alpha", Strong.easeOut, 0, 1, alpha_speed, true);
	myTween.addEventListener(TweenEvent.MOTION_FINISH, fOnFinish);
	minuteTimer.stop();
	removeChild(photos);
	load_photo();
} 
function fOnFinish(event:TweenEvent):void 
	{/*trace("ЗАКОНЧИЛСЯ ТВИН");*/}

Старый 21.12.2009, 17:40
Diestro вне форума Посмотреть профиль Отправить личное сообщение для Diestro Посетить домашнюю страницу Diestro Найти все сообщения от Diestro
  № 2  
Ответить с цитированием
Diestro
 
Аватар для Diestro

Регистрация: Oct 2006
Адрес: Кисловодск
Сообщений: 192
Отправить сообщение для Diestro с помощью ICQ
Код AS3:
myTween = new Tween(photos, "alpha", Strong.easeOut, 0, 1, alpha_speed, true);
Здесь создается новый экземпляр Tween, а "освободившийся" убивается garbage collector'ом в то время когда ему вздумается, независимо от того доигралась до конца анимация или нет.
__________________
blog.diestro.ru

Старый 21.12.2009, 17:53
lissa81 вне форума Посмотреть профиль Отправить личное сообщение для lissa81 Найти все сообщения от lissa81
  № 3  
Ответить с цитированием
lissa81

Регистрация: Oct 2009
Сообщений: 92
а вы не подскажите как это исправить. я новичок и не очень понимаю многие вещи.

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Как вариант, можно каждый новый Tween при создании добавлять в некоторый массив, а затем при проигрывании твина удалять из массива. Тогда GC его не заберет.

Старый 21.12.2009, 18:11
lissa81 вне форума Посмотреть профиль Отправить личное сообщение для lissa81 Найти все сообщения от lissa81
  № 5  
Ответить с цитированием
lissa81

Регистрация: Oct 2009
Сообщений: 92
я понимаю как это сделать на словах. но увы не знаю как это написать (((((

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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Используйте самописный твинер, их много.
__________________
Griver

Старый 21.12.2009, 18:34
Diestro вне форума Посмотреть профиль Отправить личное сообщение для Diestro Посетить домашнюю страницу Diestro Найти все сообщения от Diestro
  № 7  
Ответить с цитированием
Diestro
 
Аватар для Diestro

Регистрация: Oct 2006
Адрес: Кисловодск
Сообщений: 192
Отправить сообщение для Diestro с помощью ICQ
Самописный - наверняка имеется ввиду сторонний, а не флэшовый родной.

Например можно использовать Tweener, общение с которым происходит через мэнеджер, который следит за всеми твинами.
__________________
blog.diestro.ru

Старый 21.12.2009, 18:49
lissa81 вне форума Посмотреть профиль Отправить личное сообщение для lissa81 Найти все сообщения от lissa81
  № 8  
Ответить с цитированием
lissa81

Регистрация: Oct 2009
Сообщений: 92
вас не затруднит показать кодом как это пишется????

Старый 21.12.2009, 19:32
Diestro вне форума Посмотреть профиль Отправить личное сообщение для Diestro Посетить домашнюю страницу Diestro Найти все сообщения от Diestro
  № 9  
Ответить с цитированием
Diestro
 
Аватар для Diestro

Регистрация: Oct 2006
Адрес: Кисловодск
Сообщений: 192
Отправить сообщение для Diestro с помощью ICQ
В случае с Tweener - скачать библиотеку tweener.swc, прилинковать ее к проекту. А дальше вместо указанной выше строчки:
Код AS3:
photos.alpha = 0;
Tweener.addTween(photos,{alpha:1, time:alpha_speed,transition:"easeOutQuint"});
__________________
blog.diestro.ru

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

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

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


 


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


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