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

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

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
По умолчанию Правильная реализация эффектов для мыши

Давненько я не делал всякие эффекты. Тогда я еще маловато знал об as3 и усердно зачитывал Мука. Итак, с утра что-то стукнуло в голову, дай-ка, думаю, пока выходной, понаделаю шаблончиков - авось когда пригодятся. Сделалось вот такое:
Код AS3:
package  {
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import kordum.utils.MathExtend;
 
	/** @author KorDum **/
 
	public class CursorStarEffect extends Sprite {
		private var arrStar:Vector.<Shape> = new Vector.<Shape>();
		private var speedRotation:uint = 10;
		private var alphaDown:Number = .1;
 
		public function CursorStarEffect() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			var i:uint;
			for (i = 0; i < 15; i++) createStar();
			this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(e:Event):void {
			for each (var star:Shape in arrStar) {
				star.rotation += speedRotation + MathExtend.randomRange( -5, 5);
				star.alpha -= alphaDown;
				if (star.alpha <= 0) {
					arrStar.splice(arrStar.indexOf(star), 1);
					removeChild(star);
					createStar();
				}
			}
		}
 
		private function createStar():void {
			var star:Shape = new Shape();
			star.graphics.beginFill(0x000000);
			star.graphics.drawRect(MathExtend.randomRange(-10, 10), MathExtend.randomRange(-10, 10), 10, 10);
			star.x = stage.mouseX + MathExtend.randomRange(-10, 10);
			star.y = stage.mouseY + MathExtend.randomRange(-10, 10);
			arrStar.push(star);
			addChild(star);
		}
	}
}
Кому лень тестировать, скажу, что это своего рода крутящиеся звездочки, образующие хвост за курсором. Вообще, можно в конструктор пихать любой графический объект, будь то звезда, квадрат или еще чего, но вариант черновой и меня больше всего интересует, правильная ли реализация, что можно поменять, изменить?
__________________
тут я

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Да в основном по мелочи вроде...
speedRotation и alphaDown лучше сделать константами - их значения все равно не меняются.
Код AS3:
var i:uint;
			for (i = 0; i < 15; i++) createStar();
есть мнение что с int-ом флеш работает быстрее, да и 15 тоже в константу, в настройки вынести, возможно еще какие-то значения.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Где-то тут на форуме видел, что константы после компиляции становятся переменными. Вообще, хотелось бы потом сделать полные настройки. То есть, в конструктор передаем Object:
Код AS3:
{
 obj:DisplayObject, // объект, из которого будет состоять хвост
 alphaStep:Number,
 count:uint, // сколько будет таких фигнюшек в хвосте
 ...
}
Чем обджекты хороши - хочешь задавать параметр - задавай, не хочешь - не задавай, будут использоваться дефолтные значения.
__________________
тут я

Старый 07.11.2010, 15:54
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Код AS3:
function func(a:int=5,s:String="hello"):void
Цитата:
хочешь задавать параметр - задавай, не хочешь - не задавай, будут использоваться дефолтные значения.

Старый 07.11.2010, 16:09
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Порядок важен, Тигер. А все случаи не предусмотришь. Нужно мне в твоем коде вместо hello написать hell. И придется перед этим писать все другие параметры тоже, переписывая их дефолтные значения.
А с обджектом хоть местами меняй, хоть какое значение задавай. Я свой фреймворк сейчас на обджекты перевожу - удобно, на мой взгляд.
__________________
тут я


Последний раз редактировалось КорДум; 07.11.2010 в 16:12.
Старый 07.11.2010, 16:17
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Обджекты - ущерб автокомплиту. Я считаю что обджекты следует использовать только для передачи ключ=>значение, когда число и имена ключей заранее неизвестны. Как яркий пример - твинеры.

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Обджекты - ущерб автокомплиту
Единственный их минус. Хотя, еще к минусам можно отнести отсутствие типизации элементов.
Цитата:
Как яркий пример - твинеры.
Именно по такому подобию я и делаю, вот, смотри пример:
Код AS3:
public function BgSimple(properties:Object = null) {
	if (properties) {
		if (properties.x !== undefined) $x = properties.x;
		if (properties.y !== undefined) $y = properties.y;
		if (properties.width !== undefined) $width = properties.width;
		if (properties.height !== undefined) $height = properties.height;
		if (properties.color !== undefined) $color = properties.color;
		if (properties.alpha !== undefined) $alpha = properties.alpha;
		if (properties.border !== undefined) $border = properties.border;
		if (properties.borderColor !== undefined) $borderColor = properties.borderColor;
		if (properties.borderAlpha !== undefined) $borderAlpha = properties.borderAlpha;
	}
	this.addEventListener(Event.ADDED_TO_STAGE, ifAdd);
}
Я еще немного не определился со стилями у переменных, но знаком $ стараюсь отмечать приватные переменные.
Так вот, здесь нужно только заглянуть в класс, где заботливой рукой я указал все возможные параметры, в коструктор передавать объект с этими параметрами. Ты же это и имел в виду? Больше ни для чего обджекты я не использую из-за той же типизации и того же автокомплита.
__________________
тут я

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

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

Старый 07.11.2010, 16:34
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
TanaTiX, в смысле? Класс в примере с обджектом - это создание прямоугольного фона нужной ширины/высоты/прозрачности/итд. Если не указываешь обджект в конструкторе - берутся дефолтные значения, уже заданные в классе.
__________________
тут я

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Зачем его создавать в том классе? Проще передать готовый. И вся надобность в Object-ах отпадет. Передали DisplayObject, пересохранили ссылку на объект и делаем что хотим. Если нет DisplayObject-а в параметре - тогда создаем некую форму, определенную по умолчанию, но ей не нужно передавать хренову тучу значений, т.к. все параметры определены внутри класса. Или имеется в виду определить все параметры внутри функции на тот случай, если DisplayObject отсутствует, чтоб не плодить лишние свойства, и их передать параметром для функции, которая запустится опять же только в том случае, если не определен DisplayObject? Но даже в таком случае, т.к. это закрытая функция, нет ИМХО особой надобности создавать Object.

Или я что-то не так понял?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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