2011-07-12 8 views
1

ActionScript 2を使用してMediaMindを使用してSmartVersioning広告を作成しています(パブリッシャーはAS3を許可していません)。AS2:MovieClipにレンダリングされたグラフィックスがあるかどうかの確認

実装方法をスキップする - 基本的には、スマートバージョン管理サービスを使用してスワップ可能なイメージを含むメインタイムラインメインタイムラインのムービークリップのコレクションです。メインのタイムライン上にあるオブジェクトは、Smart Versioningオブジェクトとしてのみ定義できます。

私がこれでやっているのは、BitmapDataを使ってメインタイムライン上のアセットをアニメーション全体のグラフィックスのソースとして使用することです。

はほど簡単であるべき:

import flash.display.BitmapData; 

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

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

は、しかし(すなわち画像がアニメーション全体で必要な)スマートバージョニング資産をロードするの遅れがあります - これは、資産が「hasn場合は、上記のコードが失敗する可能性があります時間で読み込まれます。

私はその後に私の上記のコードを修正するようになった:

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); 
} 
+1

。何も描画されていない場合、 '0'でなければならないのでしょうか? – DanielB

+0

ああ完璧です。答えとして投稿したいのなら、私はそれを受け入れます。 – Marty

+0

そう......... – DanielB

答えて

1

これらのenterFrameチェックを使用することは、不適切なコーディングです。 SmartVersioningコンポーネントのCOMPLETEイベントを使用して、資産XMLがロードされた時期を判断するのはなぜですか?

C mediamindから& P:

`` MovieClip`のwidth` `をチェックheight`とのことだ何
// 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(); 
    } 
} 
+0

ニース!しかし、私はAS2を使用することに縛られているので、この場合私にとってはうまくいかないでしょう。しかし、将来の広告のためにファイルに保存されています:) – Marty

+0

これは、AS2 Eyeblaster APIリファレンスからAS2です。アカウントをお持ちの場合は、このリンクにアクセスできるはずです。https://platform.mediamind.com/OnlineHelp/MediaMind/External/#8152 – shanethehat

+0

ああ、元気です。この機能の半分がAS2であることを認識していませんでした:/ – Marty

1

あなたは何もそれに描かれていない場合、彼らは0あるべきMovieClipwidthheightをチェックすることができます。