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

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

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

Регистрация: Sep 2005
Сообщений: 33
Arrow Снова вопрос про паузу

Дорогие друзья, я знаю, мы вас уже задрали с вопросами о том как сделать паузу в скрипте, но скажу как есть - я перерыл кучу инфы, нашел как минимум пять вариантов как сделать паузу, но не один не получилось использовать. По этому спрошу на конкретном примере.

Вот у меня есть такая функция, которая делает "затухание" загруженной картинки и по окончанию процесса, вызывает загрузку следующей:
Код:
fade = function(img, newAlpha : Number, speed : Number) : Void {
        img.currentAlpha = img._alpha;

        img.onEnterFrame = function() : Void {
			
                if(img.currentAlpha > newAlpha) {
                        img._alpha -= speed;
                }
                else if(img.currentAlpha < newAlpha) {
                        img._alpha += speed;
                }
                if (Math.abs(Math.round(newAlpha-img._alpha)) <= speed) {
                        img._alpha = newAlpha;
                        delete img.onEnterFrame;

				//  Load next image
				loadImage();
                }
        };
};
Кто-нибудь, помогите вставить сюда паузу на N секунд, перед началом уменьшения _alpha.

Заранее признателен. Спасибо.

Старый 27.09.2005, 14:34
старина смерть вне форума Посмотреть профиль Найти все сообщения от старина смерть
  № 2  
Ответить с цитированием
старина смерть
Banned

Регистрация: Oct 2003
Сообщений: 206
Код:
class org.nuran.Timeout
{
	private static var _intervals:Array = new Array ();
	private var id:Number;
	
	public function Timeout ()
	{
		id = _intervals.length;
		_intervals[id] = setInterval (function (i:Number, a:Array)
		{
			a[0].apply (null, a.splice (2, arguments.length));
			clearInterval (_intervals[i]);
		}, arguments[1], id, arguments);
	}
	
	public function Clear ():Void
	{
		clearInterval (_intervals[id]);
	}
}
Использование:

Код:
import org.nuran.Timeout;
var new_timeout:Timeout = new Timeout (function (a:String, b:String)
{
	trace (a + b);
}, 1000, "Hallo", ", world!");

Старый 27.09.2005, 14:57
sl0n вне форума Посмотреть профиль Отправить личное сообщение для sl0n Найти все сообщения от sl0n
  № 3  
Ответить с цитированием
sl0n

Регистрация: Sep 2005
Сообщений: 33
Цитата:
Сообщение от старина смерть
Код:
class org.nuran.Timeout
{
	private static var _intervals:Array = new Array ();
	private var id:Number;
	
	public function Timeout ()
	{
		id = _intervals.length;
		_intervals[id] = setInterval (function (i:Number, a:Array)
		{
			a[0].apply (null, a.splice (2, arguments.length));
			clearInterval (_intervals[i]);
		}, arguments[1], id, arguments);
	}
	
	public function Clear ():Void
	{
		clearInterval (_intervals[id]);
	}
}
Использование:

Код:
import org.nuran.Timeout;
var new_timeout:Timeout = new Timeout (function (a:String, b:String)
{
	trace (a + b);
}, 1000, "Hallo", ", world!");
Как я понимаю Class - это должен быть внешний подгружаемы .as файл, так? Что то не совсем получилось это использовать. Я с ActionScript работаю всего 4 дня, простите дилетанта. Если бы вы могли еще немного подсказать, был бы благодарен. Спасибо.

Старый 27.09.2005, 14:39
Vitamin E вне форума Посмотреть профиль Отправить личное сообщение для Vitamin E Найти все сообщения от Vitamin E
  № 4  
Ответить с цитированием
Vitamin E

Регистрация: Jul 2005
Сообщений: 99
Отправить сообщение для Vitamin E с помощью ICQ
Попробуй так:
Код:
fade = function(img, newAlpha : Number, speed : Number, pause : Number) : Void {
        img.currentAlpha = img._alpha;
		startTime=getTimer();
		
		_root.onEnterFrame=function () {
		if ((getTimer()-startTime)>pause) {
		delete _root.onEnterFrame;

        img.onEnterFrame = function() : Void {
			
                if(img.currentAlpha > newAlpha) {
                        img._alpha -= speed;
                }
                else if(img.currentAlpha < newAlpha) {
                        img._alpha += speed;
                }
                if (Math.abs(Math.round(newAlpha-img._alpha)) <= speed) {
                        img._alpha = newAlpha;
                        delete img.onEnterFrame;

				//  Load next image
				loadImage();
                }
        };
};
};
};
__________________
Я не волшебник, я только учусь :p

Старый 27.09.2005, 14:59
sl0n вне форума Посмотреть профиль Отправить личное сообщение для sl0n Найти все сообщения от sl0n
  № 5  
Ответить с цитированием
sl0n

Регистрация: Sep 2005
Сообщений: 33
Цитата:
Сообщение от Vitamin E
Попробуй так:
Код:
fade = function(img, newAlpha : Number, speed : Number, pause : Number) : Void {
        img.currentAlpha = img._alpha;
		startTime=getTimer();
		
		_root.onEnterFrame=function () {
		if ((getTimer()-startTime)>pause) {
		delete _root.onEnterFrame;

        img.onEnterFrame = function() : Void {
			
                if(img.currentAlpha > newAlpha) {
                        img._alpha -= speed;
                }
                else if(img.currentAlpha < newAlpha) {
                        img._alpha += speed;
                }
                if (Math.abs(Math.round(newAlpha-img._alpha)) <= speed) {
                        img._alpha = newAlpha;
                        delete img.onEnterFrame;

				//  Load next image
				loadImage();
                }
        };
};
};
};

Спасибо - это работает!

Старый 27.09.2005, 15:08
sl0n вне форума Посмотреть профиль Отправить личное сообщение для sl0n Найти все сообщения от sl0n
  № 6  
Ответить с цитированием
sl0n

Регистрация: Sep 2005
Сообщений: 33
Vitamin E: Единственная проблема в том, что на _root.onEnterFrame у меня уже висит функция бегущей строки и как только дела доходит до этой "паузы", то моя функция "умирает" - это можжно как то решить? Спасибо.

Старый 27.09.2005, 16:32
sl0n вне форума Посмотреть профиль Отправить личное сообщение для sl0n Найти все сообщения от sl0n
  № 7  
Ответить с цитированием
sl0n

Регистрация: Sep 2005
Сообщений: 33
Еще раз всем спасибою С классом то же разобрался и этот вариант мне подошел лучше.

Старый 27.09.2005, 17:42
старина смерть вне форума Посмотреть профиль Найти все сообщения от старина смерть
  № 8  
Ответить с цитированием
старина смерть
Banned

Регистрация: Oct 2003
Сообщений: 206
Сорри, там в классе нашлась ошибочка, вернее очепятка, хех, я его уже использую пол года и не замечал =)))

Вот так без ошибок:

Код:
class org.nuran.Timeout
{
	private static var _intervals:Array = new Array ();
	private var id:Number;
	
	public function Timeout ()
	{
		id = _intervals.length;
		_intervals[id] = setInterval (function (i:Number, a:Array)
		{
			a[0].apply (null, a.splice (2, a.length));
			clearInterval (_intervals[i]);
		}, arguments[1], id, arguments);
	}
	
	public function Clear ():Void
	{
		clearInterval (_intervals[id]);
	}
}
ну и использование

Код:
import org.nuran.Timeout;
var nt:Timeout = new Timeout (function ()
{
	trace (arguments[0]);
	trace (arguments[1]);
	trace (arguments[2]);
	trace (arguments[3]);
	trace (arguments[4]);
	trace (arguments[5]);
}, 2000, "a", "b", "c", "d", "e", "f");

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

Регистрация: Jun 2006
Сообщений: 60
Здраствуйте!
Помогите кто чем может:

stop();
root.onEnterFrame=pause; function pause() {
if (getTimer()>tim)return;
pause();
}
attachMovie("c1", "c1", 1);
tim=getTimer()+100;
pause();
attachMovie("c2", "c2", 2);


смысл в том чтобы между появлением клипов была пауза.
заранее благодарю.

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

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

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


 


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


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