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

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

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

Регистрация: Feb 2010
Адрес: YcBvKFtbbu
Сообщений: 94
Отправить сообщение для firuz с помощью ICQ Отправить сообщение для firuz с помощью Skype™
По умолчанию Пауза выполнения кода

Собствено сабж.
Форум почитал, поиском попользовался. Кое-что нашел. Но для себя решения так и не нашел. Опыта маловато. Однако нужно решить задачу

Код AS3:
function play_m5(e:Event):void {
kulisi.play();
gotoAndPlay("go_m5");
}
Эта функция работает. Все хорошо.

Но внутри функции мне надо осуществить задержку выполнения кода. Между kulisi.play(); и gotoAndPlay("go_m5");. Хочу сделать задержку 2 секунды.
Понимаю что во Флеше этим почти никто не пользуется. Но у меня уж такая задача. Иначе мне сейчас никак. Помогите, плиз

Добавлено через 1 минуту
Про таймеры начитался, но как ими нормально воспользоваться, пока не разобрался.

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Код AS3:
package ru.atflash.utils {
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.getTimer;
 
	/**
	 * Реализует задерженные вызовы 
	 * @author rzer
	 * @version 1.0
	 */
	public class AtDelayedCalls
	{
 
		private static var timeCalls:Array = [];
 
		private static var eventflow:Sprite;
 
		/** 
		 * Откладывает вызов функции, на некоторое время.
		 * 
		 * @param	func		Function	Функция, вызов которой откладывается
		 * @param	args		Array		Аргументы функции
		 * @param	after		uint		Задержка перед вызовом (при значении 0 - через один кадр)
		 * @param	alwaysAdd	Boolean		Добавление происходит, даже если такая функция уже в стеке
		 * @param 	resetTimer	Boolean		Обнуляется ли таймер после добавления
		 */
		public static function doLater(func:Function, args:Array = null, after:uint = 0, alwaysAdd:Boolean = false, resetTimer:Boolean = false):void {
 
			if (!eventflow) {
				eventflow = new Sprite();
				eventflow.addEventListener(Event.ENTER_FRAME, onFrame);
			}
 
			var index:int = timeCalls.indexOf(func);
			var dTime:uint = after + getTimer();
 
			if (alwaysAdd || index == -1){
				timeCalls.push(func, args, dTime);
			}else {
				if (resetTimer) {
					if (index != -1) {
						timeCalls[index + 2] = dTime;
					}
				}
			}
 
		}
 
		public static function forget(func:Function, deleteAll:Boolean = false):void {
 
			var aFunc:Function;
 
			for (var i:int = timeCalls.length - 1; i > 0; i = i - 3) {
 
				aFunc = timeCalls[i - 2];
 
				if (aFunc == func) {
 
					timeCalls.splice(i - 2, 3);
 
					if (!deleteAll) {
						return;
					}
 
				}
			}
		}
 
 
		private static function onFrame(e:Event):void {
 
			var args:Array;
			var func:Function;
			var after:uint;
			var time:uint;
 
			time = getTimer();
 
			for (var i:int = timeCalls.length - 1; i > 0; i = i - 3) {
 
				after = timeCalls[i];
				args = timeCalls[i - 1];
				func = timeCalls[i - 2];
 
				if (after < time) {
					timeCalls.splice(i - 2, 3);
					func.apply(null,args);
				}
 
			}
 
		}
 
 
	}
 
}
Используй AtDelayedCalls.doLater(gotoAndPlay,["go_m5"], 2000);

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

Регистрация: Feb 2010
Адрес: YcBvKFtbbu
Сообщений: 94
Отправить сообщение для firuz с помощью ICQ Отправить сообщение для firuz с помощью Skype™
ого.. все так сложнно?

из этого мне мало понятно как осуществить.. но спасибо

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Это вспомогательный класс, тебе его надо положить в корень твоего проекта в папку ru/atflash/utils/, назвав AtDelayedCalls.as и забыть о том, что он там лежит.

Там где надо, делаешь нужный импорт:
Код AS3:
import ru.atflash.utils.AtDelayedCalls;
И делаешь задержку одной строчкой:
Код AS3:
AtDelayedCalls.doLater(gotoAndPlay,["go_m5"], 2000);

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

Регистрация: Feb 2010
Адрес: YcBvKFtbbu
Сообщений: 94
Отправить сообщение для firuz с помощью ICQ Отправить сообщение для firuz с помощью Skype™
так. Я правильно понял? В папке где лежит project.fla нужно разместить файл следующего вложения:
.../ru/atflash/utils

или где-то в самом корне Adobe?

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Всё правильно (где лежит project.fla)

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

Регистрация: Feb 2010
Адрес: YcBvKFtbbu
Сообщений: 94
Отправить сообщение для firuz с помощью ICQ Отправить сообщение для firuz с помощью Skype™
А для этого обязательно содавать именно проект во флеше?
Или имея только fla-файл сделать в его папке нужно вложение и все заработает.
Ну сейчас попробую

Добавлено через 42 секунды
обоже! как криво написал..

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Файл текстовый AtDelayedCalls.as. Относительно project.fla он лежит в папке ru/atflash/utils/

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

Регистрация: Feb 2010
Адрес: YcBvKFtbbu
Сообщений: 94
Отправить сообщение для firuz с помощью ICQ Отправить сообщение для firuz с помощью Skype™
Сказочно!! Все работает! Ура! Спасибо

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

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

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


 


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


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