несколько багов FP 10 под FF на Mac

0 views
Skip to first unread message

Pavel fljot

unread,
Mar 16, 2010, 9:55:01 AM3/16/10
to ruf...@googlegroups.com
Подтвердите, пожайлуйста, если кто увидит:

1. FP-4145

2. Ещё не постил.
http://allianss.velvet.ee/test.html#/projects/by-time/all/as-a-list/ здесь внизу попереключайте внизу между BY TIME и BY DATE. У меня под FireFox баги рендера вылезают типа таких http://dl.dropbox.com/u/5334698/Picture%201.png (там куски объектов не пропадают) Под Safari всё впорядке. Под фф тоже будет нормально в полноэкранном или при установке wmode direct или gpu...

3. Влияние на AS. Вызов callLater иногда не отрабатывает (кастомная реализация, алгоритм вроде вполне себе правильный, могу запостить).

И вот какая штука — _все эти три бага_  лечатся переходом в полноэкранный режим. Т.е., возможно, причина то у них у всех одна. И лучше её поправить быстрее, пока как снедный ком не наросли баги.  Есть мысли?

Павел Гольцев

unread,
Mar 16, 2010, 1:55:07 PM3/16/10
to ruf...@googlegroups.com
а что такое callLater? Это функция какого-то класса? Не припомню,
чтобы такая функция была в каком-то классе

Pavel fljot

unread,
Mar 16, 2010, 2:38:55 PM3/16/10
to ruf...@googlegroups.com
> а что такое callLater?

Нет, моя. Но оно в целом нормально работает. Повторяю, эти вот три
бага вспылил вдруг и "лечатся" одним методом. Поэтому и думаю, что что-
то сломалось в плеере. Вот код на всякий случай:


package com.inreflected.utils
{
import flash.events.Event;
import flash.display.Shape;

/**
* @author Pavel fljot
*/
public class DelayUtils
{
private static var _callLaterDispatcher:Shape;
private static var _callLaterQueue:Array/* of CallLaterData*/ = [];

//TODO: several options in case this call in is the queue:
//overwrite, add or ignore
public static function callLater(func:Function, args:Array = null,
delayFramesCount:uint = 1):void
{
if (!_callLaterDispatcher)
{
_callLaterDispatcher = new Shape();
}

if (delayFramesCount > 0)
{
_callLaterQueue.push(new CallLaterData(func, args,
delayFramesCount));
_callLaterDispatcher.addEventListener(Event.ENTER_FRAME,
callLaterDispatcher_enterFrameHandler);
}
}


private static function
callLaterDispatcher_enterFrameHandler(event:Event):void
{
var callLaterData:CallLaterData;
for (var i:int = _callLaterQueue.length - 1; i >= 0; i--)
{
callLaterData = _callLaterQueue[i] as CallLaterData;
if (--callLaterData.delayFramesCount == 0)
{
_callLaterQueue.splice(_callLaterQueue.indexOf(callLaterData), 1);
callLaterData.func.apply(null, callLaterData.args);
}
}

if (_callLaterQueue.length == 0)
{
_callLaterDispatcher.removeEventListener(Event.ENTER_FRAME,
callLaterDispatcher_enterFrameHandler);
}
}
}
}

class CallLaterData extends Object
{
public var func:Function;
public var args:Array;
public var delayFramesCount:uint;


public function CallLaterData(func:Function, args:Array,
delayFramesCount:uint)
{
this.func = func;
this.args = args;
this.delayFramesCount = delayFramesCount;
}
}

pavel...@gmail.com

unread,
Mar 17, 2010, 4:24:00 PM3/17/10
to ruFlash
Reply all
Reply to author
Forward
0 new messages