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

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

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

Регистрация: May 2012
Сообщений: 166
По умолчанию Из AS2 в AS3

Здравствуйте, может кто-то помоч перевести данный код в AS3 ?
Код AS3:
//set default effect
var currentEffect:String = "blood";
 
//make target_mc the current target
target_mc.useHandCursor = false;
target_mc.onRelease = function(){
	explosion(target_mc, currentEffect);	
}
 
target_mc._x = _root._xmouse;
target_mc._y = _root._ymouse;
target_mc.startDrag();
 
 
//Returns a random number between min and max
function randRange(min:Number, max:Number):Number {
	var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
	return randomNum;
}
 
/**
 * explosion(target movieclip, type of explosion)
 *
 *
 */
function explosion(mc:MovieClip, type:String):Void {
	//explosion settings
	if (type == "fire") {
		//set speed
		var maxSpeed:Number = 5;
		//set min size
		var minSize:Number = 2;
		//set max size
		var maxSize:Number = 6;
		//set minimum number of fragments
		var minFragments:Number = 15;
		//set maximim number of fragments
		var maxFragments:Number = 30;
		//set fragment range in pixels from sorce of explosion
		var fragmentRange:Number = 100;
		//set which type of movieClip to attach from the library
		var fragmentType:String = "fragments_fire"
	} else if (type == "explosion") {
		var maxSpeed:Number = 5;
		var minSize:Number = 3;
		var maxSize:Number = 8;
		var minFragments:Number = 9;
		var maxFragments:Number = 18;
		var fragmentRange:Number = 250;
		var fragmentType:String = "fragments_ship"
	}else if (type == "blood") {
		var maxSpeed:Number = 3;
		var minSize:Number = 1;
		var maxSize:Number = 3;
		var minFragments:Number = 30;
		var maxFragments:Number = 50;
		var fragmentRange:Number = 35;
		var fragmentType:String = "fragments_blood"
	}
 
	//set particle boundry            
	var boundyLeft:Number = mc._x-fragmentRange;
	var boundyTop:Number = mc._y-fragmentRange;
	var boundyRight:Number = mc._x+fragmentRange;
	var boundyBottom:Number = mc._y+fragmentRange;
	//get random amount of fragments based on mix/max
	var totalFragments:Number = randRange(minFragments, maxFragments);
	//set depth
	var depth:Number = mc.getNextHighestDepth();
	for (var i:Number = 0; i<totalFragments; i++, depth++) {
		//attach new fragment
		var fragment_mc:MovieClip = _root.attachMovie(fragmentType, "fragment"+depth, depth);
		//set position & random rotation
		fragment_mc._x = mc._x;
		fragment_mc._y = mc._y;
		fragment_mc._rotation = randRange(1, 359);
		//tell new clip to go to random fragment gfx
		fragment_mc.gotoAndStop(randRange(1, 3));
		//set random width and height
		var newSize:Number = randRange(minSize, maxSize);
		fragment_mc._width = newSize;
		fragment_mc._height = newSize;
		//set speed/direction of fragment
		fragment_mc.speedX = randRange(-maxSpeed, maxSpeed);
		fragment_mc.speedY = randRange(-maxSpeed, maxSpeed);
		//
		fragment_mc._alpha = randRange(50, 100);
		fragment_mc.cacheAsBitmap = true;
		//make fragment move using onEnterFrame
		fragment_mc.onEnterFrame = function():Void  {
			this._alpha -= 1;
			this._x += this.speedX;
			this._y += this.speedY;
			//if fragment is outside boundry, remove it
			if (this._alpha<=0 || this._x<boundyLeft || this._x>boundyRight || this._y<boundyTop || this._y>boundyBottom) {
				this.removeMovieClip();
			}
		};
	}
}
//
// Buttons
//
blood_btn.onRelease = function(){
	currentEffect = "blood";
}
fire_btn.onRelease = function(){
	currentEffect = "fire";
}
explosion_btn.onRelease = function(){
	currentEffect = "explosion";
}
Пробовал сам, но не получается из-за того что не могу сделать Ентерфрейм для каждого объекта отдельно.
Вот мой вариант:
Код AS3:
		function explosion(mc:MovieClip, type:String):void 
		{
			if (type == "fire") 
			{
				 maxSpeed = 5;
				 minSize = 2;
				 maxSize = 6;
				 minFragments = 15;
				 maxFragments = 30;
				 fragmentRange = 100;
				 fragment_mc = new fragments_fire;
			} 
			else if (type == "explosion") 
			{
				 maxSpeed = 5;
				 minSize = 3;
				 maxSize = 8;
				 minFragments = 9;
				 maxFragments = 18;
				 fragmentRange = 250;
				 fragment_mc = new fragments_ship;
			}
			else if (type == "blood") 
			{
				 maxSpeed = 3;
				 minSize = 10;
				 maxSize = 30;
				 minFragments = 30;
				 maxFragments = 50;
				 fragmentRange = 35;
				 fragment_mc = new fragments_blood;
			}
				boundyLeft = mc.x-fragmentRange;
				boundyTop = mc.y-fragmentRange;
				boundyRight = mc.x+fragmentRange;
				boundyBottom = mc.y+fragmentRange;
				totalFragments = randRange(minFragments, maxFragments);
 
			for (var i:int = 0; i<totalFragments; i++) 
			{
				fragment_mc.x = mc.x;
				fragment_mc.y = mc.y;
				fragment_mc.rotation = randRange(1, 359);
				fragment_mc.gotoAndStop(randRange(1, 3));
				var newSize:Number = randRange(minSize, maxSize);
				fragment_mc.width = newSize;
				fragment_mc.height = newSize;
				fragment_mc.speedX = randRange(-maxSpeed, maxSpeed);
				fragment_mc.speedY = randRange(-maxSpeed, maxSpeed);
				fragment_mc.alpha = randRange(50, 100);
				fragment_mc.cacheAsBitmap = true;
				fragment_mc.addEventListener(Event.ENTER_FRAME, particleMove);
				addChild(fragment_mc);
 
 
			}
		}
		public function particleMove(e:Event):void
		{
			fragment_mc.alpha -= 1;
				fragment_mc.x += fragment_mc.speedX;
				fragment_mc.y += fragment_mc.speedY;
				if (fragment_mc.alpha<=0) 
				{
					removeChild(fragment_mc);
				}
		}
		public function randRange(min:Number, max:Number):Number 
		{
			var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
			return randomNum;
		}
Добавлено через 2 часа 52 минуты
Тему можно удалить... вся соль была в волшебной строчке:
Код AS3:
var fragment_mc:MovieClip = e.currentTarget as MovieClip;
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.

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

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

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


 


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


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