ins_nsk
31.07.2007, 18:05
Суть проблемы в следующем - с помощью своего AS-класса по функции onEnterFrame осуществляется прорисовка "капельки стекающей по стеклу", и соответственно оставляющей мокрый след - после того как она стекает достаточно далеко, в остальных мувиках начинаются тормоза.
Пример ролика тут (http://stepiko.ru/rain/rain.html).
Примерно так:
class Drop extends MovieClip
{
var X, Y;
function Drop()
{
// блаблабла инициализая, скипед
drawDrop();
onEnterFrame = moveDrop;
}
function moveDrop()
{
// с помощью алгоритма вычислить следующую координату X и Y для прорисовки кружочка, а потом
drawDrop();
// если утекла вниз, то clear(); X=random, y=0;
}
function drawDrop()
{
with(this)
{
beginFill(0x333333,100);
moveTo(x+r, y);
curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
endFill();
}
}
}
всё чудесно, капелька вполне реалистично ползёт вниз. Но когда проходит большое количество прорисовок остальные мувики заметно тормозят (например, навигация). Неужели отрисованный след (по сути - куча прорисованных кружочков) занимает так много памяти? Ведь когда он сбрасывается по clear() - торможение исчезает.
Нельзя ли каким-то образом прооптимизировать отрисованный след после добавления к нему очередной позиции чтоб не было такого?
(не пинайте новичка :D если туплю))
Пример ролика тут (http://stepiko.ru/rain/rain.html).
Примерно так:
class Drop extends MovieClip
{
var X, Y;
function Drop()
{
// блаблабла инициализая, скипед
drawDrop();
onEnterFrame = moveDrop;
}
function moveDrop()
{
// с помощью алгоритма вычислить следующую координату X и Y для прорисовки кружочка, а потом
drawDrop();
// если утекла вниз, то clear(); X=random, y=0;
}
function drawDrop()
{
with(this)
{
beginFill(0x333333,100);
moveTo(x+r, y);
curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
endFill();
}
}
}
всё чудесно, капелька вполне реалистично ползёт вниз. Но когда проходит большое количество прорисовок остальные мувики заметно тормозят (например, навигация). Неужели отрисованный след (по сути - куча прорисованных кружочков) занимает так много памяти? Ведь когда он сбрасывается по clear() - торможение исчезает.
Нельзя ли каким-то образом прооптимизировать отрисованный след после добавления к нему очередной позиции чтоб не было такого?
(не пинайте новичка :D если туплю))