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

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

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию tween не останавливается

Сабж. Честно говоря проблема может оказаться и шире, но ИМХО корень злав моей сцене именно в неработающем .stop(); для твин-анимации.
Код выполняет слайд-шоу для 4х подгружаемых изображений.
Код:
import mx.transitions.*;
var my_mcl:MovieClipLoader = new MovieClipLoader();
var my_lst:Object = new Object();
my_mcl.addListener(my_lst);

speed = 2;//скорость изменения прозрачности
timer = 3000;//задержка перед сменой изображения
imageCount = 4;//количество подгружаемых картинок

// создание верхнего и нижнего мувика
_root.mc.createEmptyMovieClip("down",0);
_root.mc.createEmptyMovieClip("up",getNextHighestDepth());

//загрузка исходных картинок
_root.my_mcl.loadClip("1.jpg",_root.mc.down);
_root.my_mcl.loadClip("2.jpg",_root.mc.up);
_root.my_mcl.onLoadComplete = function() {
	_root.my_mcl.onLoadComplete = function() {
		//назначение прозрачности верхнему слою
		_root.mc.up._alpha = 0;
	};
	//задержка перед началом функции
	var time_pause = setTimeout(changeAlpha, timer);
};
//собственно функция
function changeAlpha() {
	//анимация альфы для верхнего изображения
	var tweenFirst = new Tween(_root.mc.up, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, speed, true);
	tweenFirst.onMotionFinished = function() {
		tweenFirst.stop();
		slider();
	};
}
function slider() {
	//проверка вхождения в цикл и назначение переменной
	//переменные отображают текущую верхнюю и нижнюю картинку
	if (!k) {
		k = 2;
	}
	if (k>imageCount) {
		k = 1;
	}
	n = k+1;
	if (n>imageCount) {
		n = 1;
	}
	_root.my_mcl.loadClip(k+".jpg",_root.mc.down);

	_root.my_lst.onLoadComplete = function() {
		_root.mc.up._alpha = 0;
		_root.my_mcl.loadClip(n+".jpg",_root.mc.up);

		_root.my_lst.onLoadComplete = function() {
			//задержка перед анимацией
			setTimeout(cycleAlpha,timer);
			function cycleAlpha() {
				var cycleTween = new Tween(_root.mc.up, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, speed, true);
				cycleTween.onMotionFinished = function() {
					//проверка наличия tween-анимация до и после ее остановки
					trace("Aftre: "+cycleTween);
					cycleTween.stop();
					trace("Before: "+cycleTween);
					//увеличение переменной
					k++;
					//зацикливание функции
					slider();
				};
			}
		};
	};
}
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!


Последний раз редактировалось TanaTiX; 29.03.2008 в 00:14.
Старый 29.03.2008, 00:22
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 2  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Код:
tweenFirst.stop();
Это лишнее, Вы останавливаете то, что уже остановилось
И это так же:
Код:
cycleTween.stop();
Зачем Вы везде _root используете?

Про это вообще молчу.
Код:
_root.my_mcl.loadClip("1.jpg",_root.mc.down);
_root.my_mcl.loadClip("2.jpg",_root.mc.up);
_root.my_mcl.onLoadComplete = function() {
	_root.my_mcl.onLoadComplete = function() {
		//назначение прозрачности верхнему слою
		_root.mc.up._alpha = 0;
	};
	//задержка перед началом функции
	var time_pause = setTimeout(changeAlpha, timer);
};
У Вас код очень проблемный, так что корень зла в нём.
Создайте общую функцию загрузки с одним
Код:
MovieClipLoader
и событием
Код:
onLoadComplete
__________________
john

Старый 29.03.2008, 00:34
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Дело в том, что если не остановить твин, то при повторном посещении страницы он наверняка наложится на новый. При этом можно будет наблюдать мигание всего и вся. Уже был такой печальный опыт В данном примере представлен лишь голый код вне целостного проекта.
А чем руты плохи?
Цитата:
Про это вообще молчу.
Создайте общую функцию загрузки с одним MovieClipLoader и событием onLoadComplete
честно говоря не представляю как это осуществить и как к этому подступиться... Сам по себе код работает, проблемы возникают при расположении его в основной документ (визуально также работающий без проблем)
Заранее спасибо за помощь.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 29.03.2008, 01:10
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 4  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Ну вроде такого:
Код:
import mx.utils.Delegate;
var mcl:MovieClipLoader = new MovieClipLoader();

this.onLoadInit = Delegate.create(this, Init);
mcl.addListener(this);

function Init(target:MovieClip) {
    if (a<b) {//условие какое-то, если надо;
        loadMc(path,mc);//ну, или другое что-то делаем;
    }
}

function loadMc(url:String, target:MovieClip) {
        mcl.loadClip(url,target);
}
Цитата:
А чем руты плохи?
А если эту флешку подгружать будем?
__________________
john

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Molecula, сенкс, учту
...к сожалению это проблему пока не решает
ЗЫ. пока создаю с тем учетом, что ничто никуда подгружаться не будет...
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Apr 2007
Сообщений: 1,369
Ок. Кстати, Вы не на то навешали:
Код:
_root.my_mcl.onLoadComplete = function() {
А надо на:
Код:
var my_lst:Object = new Object();
__________________
john

Старый 29.03.2008, 01:35
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 7  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Это так что ли?
Код:
_root.my_lst.onLoadComplete=new Object(timeObj);
timeObj = setTimeout(cycleAlpha,timer);
function cycleAlpha() {...
...и тоже не решает проблему
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 29.03.2008, 03:36
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 8  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Нет! Внимательней.
Код:
_root.my_mcl.onLoadComplete = function() {
my_mcl - это у Вас MovieClipLoader, а надо на объект вешать, т.е. на my_lst.
Вы же его объектом сделали:
Код:
var my_lst:Object = new Object();
Поэтому, та срашная конструкция и не работает.
Ведь Вы подписали так:
Код:
my_mcl.addListener(my_lst);
А my_lst не присвоили ивент.
Но, мне честоно говоря, страшно что будет, когда та махина заработает
__________________
john

Старый 29.03.2008, 04:02
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 9  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Цитата:
Но, мне честоно говоря, страшно что будет, когда та махина заработает
после этой фразы и пробовать страшно...
...и вообще что-то я на ночь сильно запутался. Буду надеятся, что утром или все пойму или кто-то предложит не такое "страшное" решение
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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