ОБНОВЛЕНО
У меня есть большой загроможденный код, который я хочу ускорить, создав экземпляр класса CubeEaseOut
один раз. Делаю это через фф:
var myClass = new CubeEaseOut()
myClip.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
myClip2.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
myClip3.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
function onMouseOver(e:Event){
//made changes here
myClass.initializer(e.currentTarget, ["scaleX",1.5,"height",200]);
}
Поэтому всякий раз, когда я перемещаю мышь на любой из этих клипов, вызывается функция с именем initializer()
внутри класса CubeEaseOut
.
Внутри класса CubeEaseOut
у меня есть код, который один раз запускает ENTER_FRAME
, а затем периодически вызывает функцию animateThis()
.
package;
import goes here...
class CubeEaseOut extends Sprite {
var here...
public function new(){
super();
addEventListener(Event.ENTER_FRAME, animateThis);
}
public function initializer(mc:Dynamic, vars:Array<Dynamic>()){
vars[1] //this is a Float with value 1.5
mc[vars[0]] //is mc.scaleX
//some other code
//notice many variables received here are needed by other functions
//but if I make this public, or placed outside functions, every call
//on this function will overwrite previous values
//other variables here
var sp:Float = (vars[1] - mc[vars[0]])/50
}
private function animateThis(e:Event){
//some other code
//many variables from initialize() function is needed here
iter++
mc[vars[1]] += sp*iter
}
}
Дело в том, что для работы animateThis()
нужны переменные из initializer()
. Как передать переменные из initializer()
в animateThis()
, чтобы следующий вызов initializer()
не переопределял предыдущие переменные?
Попытки:
- Я пытался использовать Global vars, но это все портит.
- Поместите ENTER_FRAME внутрь функции initializer(), но окажется, что ENTER_FRAME будет называться my times - интенсивное использование процессора.
- Создано несколько экземпляров класса - также интенсивно использующих ЦП.
- Пытался использовать this.aVar, aVar переопределяется следующим вызовом.
Дополнительная информация:
Полный код, который я делаю, похож на этот
Код анимации не запускается, когда мышь находится вне клипа 1, но находится внутри клипа 2
но сейчас я реализую класс и ENTER_FRAME.