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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.10.2013, 07:28
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 21  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
Dukobpa3, совершенно верно про кратность интервала таймера и частоту кадров. Но, есть несколько способов добиться более или менее точных таймингов. Первый описан в цикле из трех статей здесь: http://www.computus.org/journal/?p=22 Там же разжевано и то, почему все это происходит.
Второй способ - подгружать mp3 со строго отмеренной длиной, равной вашему интервалу, и использовать событие SOUND_COMPLETE.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от Vasyaga Посмотреть сообщение
Второй способ - подгружать mp3 со строго отмеренной длиной, равной вашему интервалу, и использовать событие SOUND_COMPLETE.
Которое придет в том же потоке событий, что и события таймера... И никакой разницы, кроме загрузки и декодирования мусора, не будет.

Добавлено через 9 минут
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Интересно что в справочнике только для Timer написали поправку.
По двум причинам. setInterval и setTimeout были добавлены для совместимости (по-крайней мере так позиционировалось когда только появилась AVM2) и на их документацию забили сразу же, с припиской "рекомендуется создавать объект Timer". И вторая, обе эти функции все равно создают таймер, со всеми вытекающими.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 28.10.2013, 16:26
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 23  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Сделал пока вот как, если у такого подхода есть какие то недостатки по сравнению с другим ( который я не знаю ), то то поделитесь пожалуйста им.
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		private var _timerFrame:TimerFrame;
		private var _animator:Animator;
		private var _boll:Boll;
		private var _convas:Convas;
		public function Main() 
		{
			init();
		}
		private function init(event:Event=null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler);
 
			_timerFrame = new TimerFrame();
 
			_boll = new Boll();
			_animator = new Animator(_boll);
			_animator.startX = 50;
			_animator.startY = 200;
 
			_convas = new Convas();
			super.addChild(_convas);
			_animator.doc = _convas;
		}
 
		private function stage_mouseUpHandler(event:MouseEvent):void 
		{
			_timerFrame.removeAnimator(_animator);
		}
 
		private function stage_mouseDownHandler(event:MouseEvent):void 
		{
			_timerFrame.addAnimators(_animator);
		}
	}
}
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Boll extends Sprite
	{
 
		public function Boll() 
		{
			super.addEventListener(Event.ADDED_TO_STAGE, super_addedToStageHandler);
		}
 
		private function super_addedToStageHandler(event:Event):void 
		{
			super.removeEventListener(Event.ADDED_TO_STAGE, super_addedToStageHandler);
 
			super.graphics.beginFill(0x2B81AE);
			super.graphics.drawCircle(0, 0, 40);
			super.graphics.endFill();
		}
		override public function get x():Number {return super.x ;}
		override public function set x(value:Number):void { super.x = value; }
 
		override public function get y():Number {return super.y;}
		override public function set y(value:Number):void {super.y = value;}
 
	}
 
}
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.errors.IllegalOperationError;
	public class Animator extends Object implements IAnimator
	{
		private var _boll:DisplayObject;
 
		private var _doc:DisplayObjectContainer;
 
		private var _startX:int;
		private var _startY:int;
 
		private var _finishX:int;
		private var _finishY:int;
 
		private var _elapsedTime:Number;
 
		public function Animator(boll:DisplayObject) 
		{
			_boll = boll as DisplayObject;
		}
		private function addCanvas():void 
		{
			_boll.x = _startX;
			_boll.y = _startY;
			_doc.addChild(_boll as DisplayObject);
		}
 
		public function animation(time:Number):void
		{
			trace('animator');
		}
		public function set startX(value:int):void {_startX = value;}
		public function set startY(value:int):void {_startY = value;}
 
		public function set finishX(value:int):void {_finishX = value;}
		public function set finishY(value:int):void {_finishY = value;}
 
		public function set doc(value:DisplayObjectContainer):void 
		{
			if (!value) throw new IllegalOperationError("");
			_doc = value;
			this.addCanvas();
		}
 
		public function set elapsedTime(value:Number):void 
		{
			_elapsedTime = value;
		}
 
	}
 
}
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	public class Convas extends Sprite
	{
 
		public function Convas() 
		{
			super.addEventListener(Event.ADDED_TO_STAGE, super_addedToStageHandler);
		}
 
		private function super_addedToStageHandler(event:Event):void 
		{
			super.removeEventListener(Event.ADDED_TO_STAGE, super_addedToStageHandler);
 
		}
 
	}
 
}
Код AS3:
package 
{
 
	public interface IAnimator 
	{
		function animation(time:Number):void;
	}
 
}
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.DataEvent;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	public class TimerFrame extends Sprite
	{
		private var _elapsedTime:Number;
		private var _animators:Vector.<IAnimator>;
 
		public function TimerFrame() 
		{
			_animators = new Vector.<IAnimator>([]);
			addEventListener(Event.ENTER_FRAME, super_enterFrameHandler);
		}
 
		private function super_enterFrameHandler(event:Event):void 
		{
			var num:Number = 5;
			var length:int = _animators.length;
			for (var i:int = 0; i < length; i++) 
			{
				_animators[i].animation(num);
			}
		}
		public function addAnimators(animator:IAnimator):void
		{
			_animators.push(animator);
		}
		public function removeAnimator(animator:IAnimator):void
		{
			var length:int = _animators.length;
			for (var i:int = 0; i < length; i++) 
			{
				if (_animators[i] == animator)
				{
					_animators.splice(i, 1);
					break;
				}
			}
		}
 
	}
 
}
И прежде чем я начну делать класс дляентерФрайм + гетТаймер, хочу вот что уточнить.
Какую связку нужно или лучше делать - ентерФрайм + гетТаймер или таймер + гетТаймер?

Старый 28.10.2013, 16:46
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 24  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
Сообщение от Akopalipsis
И прежде чем я начну делать класс
Прежде чем наворачивать вот это на свой проект - сделай то, что заставит тебя этим заниматься.
Другими словами - решай проблемы по мере поступления.
У тебя есть в проекте косяки которые влечет за собой косой таймер? Или ты решил сделать всё "сразу правильно"?

Я по опыту могу сказать что ентерпрайз-подход нужен в ентерпрайзе. Если ты пишешь какой-то микропроект для себя - то там это всё только усложняет понимание. Не заморачивайся с таймера, насколько я понимаю - ты еще и с ентерфреймом то до конца не разобрался.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 28.10.2013, 16:48
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 25  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
public function addAnimator(animator:IAnimator):void {
    if (_animators.indexOf(animator) == -1)
        _animators.push(animator)
}
 
public function removeAnimator(animator:IAnimator):void {
    _animators.splice( _animators.indexOf(animator), 1 );
}
Canvas.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 28.10.2013, 17:16
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 26  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
dimarik Спасибо! А как с enterFrame быть?
Цитата:
У тебя есть в проекте косяки которые влечет за собой косой таймер? Или ты решил сделать всё "сразу правильно"?
Вот пройдёт время и мне может это срочно понадобится и вместо "а! я это уже делал", будет тема на форуме - "EnterFrame + getTimer срочно! бросили все дела и начали мне помогать!!!!!".
Вот представьте чтобы было, если бы Вы попали к любому специалисту, который не чего не умеет,
только по тому, что его наставник говорил, что пока тебе это не надо.
Цитата:
ты еще и с ентерфреймом то до конца не разобрался.
Вот сейчас я и разбираюсь. И если Вам не тяжело, то в чем мои не понимания EnterFrame?
Да, я не знаю как сделать, чтобы один класс был на все приложение. Можете на словах обьяснить?

Добавлено через 5 минут
Цитата:
Я по опыту могу сказать что ентерпрайз-подход нужен в ентерпрайзе.
Ентерпрайз - это enterFrame+getTimer?

Старый 28.10.2013, 17:28
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 27  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
Ентерпрайз - это
Энтерпрайз - это перестраховка там где вероятность косяка слишком мала, для того чтобы тратить время и писать + 200-2000 строк кода. Но их все-равно пишут. Потому что ентерпрайз.

Добавлено через 3 минуты
KISS
Цитата:
по тому, что его наставник говорил, что пока тебе это не надо.
Я бы не хотел попасть к специалисту который знает всё, но так и не смог ничего закончить.
Потому что он не специалист, а академик.
И с академиками я работать не хочу и не буду. А специалист тем и отличается от академика что знает он, возможно, меньше. Но всем, что он знает - умеет пользоваться.
Перегруз информацией еще никому в прок не стал.

Добавлено через 13 минут
Вообще у меня по этому поводу слегка предвзятое отношение.
Насмотрелся уже велосипедов разных.
И очень важно понимать, где стоит воротить такую схему, потому что это действительно удобнее. А где лучше просто сделать то что надо.
Очень уж часто такие схемы только оттягивают момент "релиза"(даже если это чисто понятие для себя).
При любых раскладах важнее закончить начатое, чем позаниматься любовью и в итоге запутаться и вообще ничего не сделать.

Название: Wi4OpR6_7KM.jpg
Просмотров: 207

Размер: 24.2 Кб
__________________
Кто к нам с чем для чего - тот у нас того от того.


Последний раз редактировалось Dukobpa3; 28.10.2013 в 17:44.
Старый 28.10.2013, 17:52
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 28  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Вообще у меня по этому поводу слегка предвзятое отношение.
я не стремлюсь создать простое приложение перегруженное всякими подстраховками.
я учусь и буду учится, потому что сейчас на это есть время и это не кого кроме меня не затрагивает.
Ещё раз скажу, что я буду учится, пока учусь, а не когда от моей тупости, кто то будет страдать.
С "излишествами" про которые говорится по Вашей ссылке я согласен, но я не согласен, что она мне помогла решить мои вопросы. я искренне не понимаю советов, которые предлагают оставить всё на потом.
Так же я не понимаю для кого Вы старались написав два последних поста. я не чего не подчерпнул, кроме как - я это умею, знайте об этом все, а ты не учись, иди курьером работай, потому что я умею, а ты ещё нет. И я буду об этом каждое твоё сообщение говорить, потому что мне забавно от того, что я кого то называю глупым, а вообще программисты нынче не те... ох не те.
я прошу прощения за такое резкое мнение, но оно вот так со стороны выглядит.

Старый 28.10.2013, 17:55
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 29  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я умею именно потому что сознательно не усложнял себе жизнь когда этого не требовалось. Я выполнял реальные задачи. И со временем дорос и до таких задач.
В этом и был главный посыл моего сообщения.
И это совершенно не значит "не учись". Просто учеба ради учебы - это бред.
Учеба должна помогать тебе с чем-то справиться. С какой-то задачей.

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

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

Добавлено через 4 минуты
И при приеме в свою команду миддла-жуниора я предпочту того который не знает как называется паттерн, или не знаком с каким-то подходом - но у него в портфолио есть хоть один законченный проект.
Бог-весть как написан, но работает.
Потому что я пойму - человек сможет закончить начатое.
А научить делать его это правильно - я смогу.
__________________
Кто к нам с чем для чего - тот у нас того от того.


Последний раз редактировалось Dukobpa3; 28.10.2013 в 18:14.
Старый 28.10.2013, 18:10
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 30  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вот и Дизель согласен
Нажмите на изображение для увеличения
Название: dstupid2.jpg
Просмотров: 155
Размер:	366.3 Кб
ID:	30131
Все должно быть в гармонии. "Спортсмен", прекрасно разбирающийся в тонкостях метаболизма, расщепления молочной кислоты и синтеза белков, неспособный поднять гирю — не спортсмен.
__________________
Reality.getBounds(this);

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

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

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


 


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


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