Показать сообщение отдельно
Старый 06.08.2012, 17:47
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 1  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
По умолчанию Каким образом через event listener передать переменную в функцию?

У меня есть "создатель частиц", и мне их нужно в определенный момент (к примеру, когда полностью частица выполнит Tween _fly) удалять. Но, как вы видите, в коде невозможно с листенером передать тот же спрайт в новую функцию, чтобы он уже работал с ней. Есть идеи, как это выполнить? Полный код с возможностью теста вот:

Код AS3:
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Sprite;
var c_radius:Number = new Number();
var _ypos:Number = new Number();
var ground:Number = new Number();
var howlong:Number = new Number();
var howlongdrop:Number = new Number();
ground = stage.stageHeight;
addEventListener(Event.ENTER_FRAME, spawn);
function spawn(n:Event)
{
	howlongdrop = Math.ceil(Math.random() * 300) / 100;
	howlong = Math.ceil(Math.random() * stage.stageWidth);
	_ypos = Math.ceil(Math.random() * stage.stageHeight);
	c_radius = Math.ceil(Math.random() * 20);
 
	var sprite:Sprite = new Sprite();
	sprite.graphics.beginFill(0x000000, 2);
	sprite.graphics.drawCircle(0,0,c_radius);
	sprite.graphics.endFill();
	sprite.y = _ypos;
	sprite.alpha = Math.ceil(Math.random() * 100) / 100;
	addChild(sprite);
	behave(sprite, ground, howlong, howlongdrop);
}
 
function behave(i:Sprite, groundy:Number, howlongfly:Number, howlongdrop2:Number)
{
	var _fly:Tween = new Tween(i,"x",Strong.easeOut,i.x,i.x + howlongfly,2,true);
	var drop:Tween = new Tween(i,"y",Bounce.easeOut,i.y,groundy,howlongdrop2,true);
	_fly.addEventListener(TweenEvent.MOTION_FINISH, dissapear);
}
 
 
function dissapear(n:Event) {
//здесь мне надо уменьшать alpha спрайта i из функции behave а после удалять child.
//Но как мне получить доступ к i? всунуть в параметры кроме n:Event сюда его никак нельзя!
}