Alexd21
24.02.2011, 20:42
Есть красивый эффект, но жрет память сильно и через некоторое время флеш начинает притормаживать.
Как освобождать память от динамических объектов которые уже не нужны?
Привожу код:
package
{
import com.greensock.*;
import com.greensock.easing.*;
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.utils.*;
public class test_star extends Sprite
{
public function test_star()
{
var currentcolor:uint = 0xffffff;
var timer_newstar:Timer = new Timer(10,0);
var timer_newcolor:Timer = new Timer(500,0);
timer_newstar.addEventListener(TimerEvent.TIMER,f_newstar);
timer_newcolor.addEventListener(TimerEvent.TIMER,f_newcolor);
timer_newstar.start();
timer_newcolor.start();
function f_newcolor (event:TimerEvent):void
{
currentcolor = Math.random() * 0xffffff;
TweenMax.to(class_img_star, 0.2, {tint: currentcolor});
}
function f_newstar (event:TimerEvent):void
{
var newstar:MovieClip = new class_img_star();
newstar.x = Math.random() * 550;
newstar.y = Math.random() * 400;
var targetX:Number = newstar.x + Math.random() * 10;
var targetY:Number = newstar.y + Math.random() * 10;
var targetRotation:Number = Math.random() * 360 - 180;
addChild(newstar);
TweenMax.to(newstar, 3, {alpha: 0, scaleX: 3, scaleY: 3, tint: currentcolor});
TweenMax.to(newstar, 3, {rotation: targetRotation, x: targetX, y: targetY});
TweenMax.to(newstar, 3, {blurFilter:{blurX:3, blurY:3}, onComplete: removeStar});
function removeStar():void
{
removeChild(newstar);
newstar = null;
}
}
}
}
}
Как удалять объекты newstar из памяти?
Добавлено через 54 минуты
покапался в ранних постах, законченные решения отсутствуют.
MemoryController, GC - не дают нужного эффекта.
они очишают память при её критичном заполнении.
а нужно: создался объект - отработал - удалился из памяти
Как освобождать память от динамических объектов которые уже не нужны?
Привожу код:
package
{
import com.greensock.*;
import com.greensock.easing.*;
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.utils.*;
public class test_star extends Sprite
{
public function test_star()
{
var currentcolor:uint = 0xffffff;
var timer_newstar:Timer = new Timer(10,0);
var timer_newcolor:Timer = new Timer(500,0);
timer_newstar.addEventListener(TimerEvent.TIMER,f_newstar);
timer_newcolor.addEventListener(TimerEvent.TIMER,f_newcolor);
timer_newstar.start();
timer_newcolor.start();
function f_newcolor (event:TimerEvent):void
{
currentcolor = Math.random() * 0xffffff;
TweenMax.to(class_img_star, 0.2, {tint: currentcolor});
}
function f_newstar (event:TimerEvent):void
{
var newstar:MovieClip = new class_img_star();
newstar.x = Math.random() * 550;
newstar.y = Math.random() * 400;
var targetX:Number = newstar.x + Math.random() * 10;
var targetY:Number = newstar.y + Math.random() * 10;
var targetRotation:Number = Math.random() * 360 - 180;
addChild(newstar);
TweenMax.to(newstar, 3, {alpha: 0, scaleX: 3, scaleY: 3, tint: currentcolor});
TweenMax.to(newstar, 3, {rotation: targetRotation, x: targetX, y: targetY});
TweenMax.to(newstar, 3, {blurFilter:{blurX:3, blurY:3}, onComplete: removeStar});
function removeStar():void
{
removeChild(newstar);
newstar = null;
}
}
}
}
}
Как удалять объекты newstar из памяти?
Добавлено через 54 минуты
покапался в ранних постах, законченные решения отсутствуют.
MemoryController, GC - не дают нужного эффекта.
они очишают память при её критичном заполнении.
а нужно: создался объект - отработал - удалился из памяти