2010-11-24 8 views
0

フラッシュビデオを埋め込むためにobjectembedタグに追加できるパラメータがいくつかあります。ほとんどがhereと記載されています。それらの一部は、ActionScriptを使用してプログラムによってアクセス/変更することができます(<param name="scale">にはstage.scaleModeでアクセスできます)。ActionScriptからループパラメータの値を確認する方法はありますか?

loopパラメータの値にアクセス/変更することはできますか?

編集に追加:私はflashvarsについて知っています、それは私が求めているものではありません。

+0

私は間違っている可能性がありますが、私はASがループ相当物を持たないことを90%確信しています。あなたは何を達成しようとしていますか、私はあなたを正しい方向に向けることができます。 – Zevan

+0

私のプログラム[DRY](http://en.wikipedia.org/wiki/DRY)を維持するためにASからどのパラメータ*にアクセスできるかを調べようとしています。また、いくつかのさまざまなプログラムで、Flashの組み込みパラメータを使用できるようにしたいと考えています。私は彼らが直接アクセスできないことを90%確信しています。 – zzzzBov

+0

@downvoter、お世話になりますか? – zzzzBov

答えて

4

一般的なネットコンセンサスは、Flashの内部からflashvars/movie以外のパラメータにアクセスすることはできません。

ただし、少なくとも一部のブラウザではJavaScriptからパラメータにアクセスすることができます。もちろん、外部からFlashとJavaScriptをインターフェースすることもできます。

おそらくの線に沿ってJavaScriptのルーチン:Flashでの方法とともに

function getParam(paramName) { 
    return $('#flashid param[name=' + paramName + ']').val(); 
} 

は:

import flash.external.ExternalInterface; 

function getParam(paramName:String):String { 
    return String(ExternalInterface.call("getParam", paramName)); 
} 

明らかに保証するスクリプトへのアクセスは、SWFおよびオブジェクト/埋め込みで有効になっています。

+0

すばらしい解決策! – gthmb

+0

@gthmbさて、私はそれをテストしていませんが、原則は私にとっては健全なようです。 JSビットが機能します。 Flashの典型的なものは、自分の設定に直接アクセスできないということですが、私はそれが本当であるかどうかまだ分かりませんが、あまりにも愚かなようです。しかし、これはフラッシュです... – Orbling

+0

いい解決策はテストされていませんが、うまくいくと思います。 – Zevan

1

"loopパラメータの値をActionScript経由でアクセス/変更できますか?"
短い回答:気にしないでください。

長い答え:Orblingの答え@

は、パラメータが埋め込まれたFlashビデオを追加したときから追加または削除された場合、理論的に矛盾した状態になる可能性がある、JavaScriptでのチェックに依存しています。

再生パラメータやループパラメータが設定されているかどうかを間接的に確認する方法を考えました。パラメータは、ルートビデオに2つ以上のフレームがある場合にのみ検出できます。

if (!temp.loadParams.playParam) 
{ 
    temp.loadParams.playParam = true; 
    temp.say('temp: played'); 
} 

temp

最初のフレーム

if (temp.loadParams.playParam) 
{ 
    temp.loadParams.loopParam = true; 
    //uses external interface to log to the console (essentially the same as trace) 
    temp.say('temp: looped'); 
    stop(); 
} 

第2のフレームがドキュメントクラス名、loadParamsはPARAM状態を保存するだけの静的オブジェクトです。 play paramがtrueの場合、ビデオはフレーム2に移動し、playParamの値が設定されます。 loop paramがtrueの場合、ビデオはフレーム1に戻り、loopParamという値が設定されます。

playがfalseの場合、loopはまだEvent.ENTER_FRAMEでいくつかの軽快なフットワークを使用して検出することができたが、この時点では、それは単に最初または最後のフレームにplay();stop();で上書きすることができ、パラメータの値をチェックし続けるためにばかげて。

+0

ループがループするまでループが設定されているかどうかはわかりませんが、賢明な考えです。 – Orbling

+0

@正確に振り回して、私はあなたに賞金を授与したのです。 – zzzzBov

+0

よろしくお願いいたします。私の答えは理想とはかけ離れていますが、私はデータを得るために唯一の方法しか考えていません。ブラウザーを検出し、初期化後のパラメーターにアクセスする方法を知ることによって、不一致の瑕疵を回避することができます。デフォルトの右クリックメニューが有効になっていると、ループが変更される可能性があります。これはおそらく内部的なものです。 – Orbling

関連する問題