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

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

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

Регистрация: Jun 2005
Сообщений: 8
The bomb! [Script][AS2] Изменение FPS

мульт, создавался двумя персонами, первая фпс 15, а вторая по ошибке 20. теперь надо как нить соеденить их. так вот вопрос:

можно ли вовремя мульта, менять фпс? если да, то как?

Старый 25.06.2005, 19:13
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Оригинал писал C2Plus
Цитата:
...кстати говоря, менять уровни местами можно используя swapDepths. Таким образом, например, можно менять мувик в _level0 без перезагрузки остальных.

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

Насчет изменения фпс и размеров ничего не могу сказать, сейчас лень эксперементировать...

а то нельзя, нельзя... Можно!
Цитата:
да, именно _level0.swapDepths (_level1);
Эта операция меняет местами сами уровни, после нее все, что было в _level1 будет доступно через _level0 и наоборот.

Вот пример:
http://www.bsmart.ru/archives/misc/swap_levels.rar
смотреть во флеше, т.к. вывод идет через трассировку.
Цитата:
область применения, прямо скажу, специфическая... Допустим, есть набор готовых свфок, предположим, это игра или анимация, и мы хотим показывать поверх нее некий рекламный блок, однако, свфка на это не заточена и более того, не хочет работать в _level1 (или в муве _level0) по принципиальным соображениям. Разумеется, ее исходник не доступен. В таком случае мы можем сделать свой загрузчик, который подгрузит рекламу и свфку в произвольные уровни, а затем свфку поставит на удобное ей место - в _level0. Главное поставить ее в _level0 до ее инициализации, хотя тут возможны варианты.

В общем, это средство на крайняк - для исправления кривой архитектуры приложения. Однако примечательно то, что имя уровня фактически зависит от его глубины, и это просто прикольно.

С другой стороны, _level`ам тоже есть применение, хотя, наверное, все, что они позволяют сделать, возможно реализовать и на мувиклипах... Быть может, на мувиклипах даже лучше, не знаю - на мувиках в _level0 - есть родитель для всего, а на левелах общего родителя всего нет, хотя, корневой элемент можно и игнорировать при необходимости, а можно и самому создать корневой элемент... С другой стороны, _level`ы сильнее изолированы друг от друга, чем соседние мувики, которые могут найти друг друга через родителя... Это, наверное, вопрос из разряда: "Разбивать яйцо следует острой стороной или тупой?".
а теперь от себя

Есть еще второй способ менять FPS, это через setInterval(), у данного способа есть свои минусы и плюсы
минус - лишний код, и надо обрабатывать вручную
плюс - можно двигать объекты с разной скоростью

Недавно я написал класс FPS который занимаеться этим
Цитата:
Недавно я писал класс FPS
скачать можно тут, как пользоваться классами можно узнать в документации к флэшу
Код:
import orange.utils.FPS;
var boo:FPS = new FPS(2);
this.createEmptyMovieClip("ball_mc",3);
this.ball_mc.lineStyle(35,0xff0000,100);
this.ball_mc.moveTo(0,0);
this.ball_mc.lineTo(0.2,0);
this.boo.onEnterFrame = function () {
	trace("boo");
	_root.ball_mc._x ++;
	this._fps +=0.5;
}
Второй способ это через setInterval

Или использовать вариант silin'а

Код:
class FPS{
	var onEnterFrame: Function;
	private var _framerate, intID : Number;
	private var listeners:Array;
	function FPS (frameRate){
		_fps = frameRate;
		listeners=[this]
	}
	function get _fps(){
		return _framerate;
	}
 	function set _fps (frameRate){
		clearInterval (intID);
		_framerate = frameRate
		intID=setInterval(this,'update',1000 / frameRate)
	}
	function stop (){
		clearInterval (intID);	
	}
	function play (){
		_fps = _framerate;	
	}
	private function update(){
		for(var i in listeners) listeners[i].onEnterFrame();
		updateAfterEvent();
	}
	function addListener(obj){
		listeners.push(obj)
	}
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^


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

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

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


 


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


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