AS2: Проверка, есть ли у MovieClip какая-либо графика - PullRequest
1 голос
/ 12 июля 2011

Я работаю над рекламой SmartVersioning, используя MediaMind с использованием ActionScript 2 (издатель не допускает AS3).

Пропуск, как это реализовано - в основном то, что у меня есть, это коллекция MovieClips на основная временная шкала , содержащая заменяемое изображение (через службу Smart Versioning).Вы можете определять объекты как объекты Smart Versioning только в том случае, если они находятся на основной временной шкале.

Я использую BitmapData для использования ресурсов на основной временной шкале в качестве источника графики для всей анимации..

Должно быть так же просто, как:

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(143, 230, true, 0);

bmd.draw(_root.person1);
attachBitmap(bmd, getNextHighestDepth());

Однако существует задержка при загрузке активов Smart Versioning (т. Е. Изображений, необходимых для анимации) - так что это может привести к сбою кода вышеесли ресурс не загружен вовремя.

Затем я изменил свой код выше:

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(143, 230, true, 0);

onEnterFrame = function():Void
{
    bmd.draw(_root.person1);
}

attachBitmap(bmd, getNextHighestDepth());

Работает, но имеет очевидные проблемы и довольно плохое кодирование.Итак, есть ли способ сделать проверку, чтобы увидеть, была ли нарисована какая-либо графика в MovieClip, внутри которой выполняется этот код?Что-то вроде:

onEnterFrame = function():Void
{
    if(<hasNoGraphicsYet>)
        bmd.draw(_root.person1);
    else
        delete(onEnterFrame);
}

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Вы правы, что использование этих проверок enterFrame является плохим кодированием.Почему бы не использовать событие COMPLETE из компонента SmartVersioning, чтобы определить, когда загружается XML-код вашего актива?

C & P из mediamind:

// wait until all of the Smart Items have been loaded
stop();
import eyeblaster.events.EBSmartVersioningEvent;
// Register to the XML_LOADED event in order to update the Smart Items
SVComp.addEventListener(EBSmartVersioningEvent.XML_LOADED,onXMLloaded);
// Register to the COMPLETE event in order to continue movie playback after all items are updated
SVComp.addEventListener(EBSmartVersioningEvent.COMPLETE,onComplete);

function onXMLloaded(event)
{
    // update all Smart Items
    SVComp.updateAllItems();
}
function onComplete(event)
{
    // check that the Complete event is for all items
    if (event.item==null)
    {
        play();
    }
}
1 голос
/ 12 июля 2011

Вы можете проверить width и height из MovieClip Они должны быть 0, если на нем ничего не нарисовано.

...