0

swfobjectとサイト訪問者が以前にそこにいたかどうかをチェックするいくつかのCookieコードを使用して、ボーダレスビデオの非常にミニマルなサンプルを作成しようとしています。後者のCookieコードは機能しますが、基本的なSWFObject2.2コードは機能しません。

私の問題は、code.googleのSWFObject2.2ライブラリが期待どおりに機能していないことです。具体的には、params.play ='false'に準拠しておらず、この属性の設定方法に関係なく、毎回SWFを自動再生しています(準拠していません)。 指定されたドメインからCookieを読み取り、「autostart_video = false」で設定されている場合は、更新時にビデオを自動開始しないようにする目的で、文字列「false」をそのSWFObject再生パラメーターに渡します。Cookieチェックコードですが、@#$%#$ @$swfコードはそうではありません。以下の最も簡単な例では、SWFオブジェクトコードだけをテストするために、Cookieコードを完全に除外しました。

以下のコードサンプルの属性は静的公開を使用していますが、動的公開方法も機能しません(両方の方法を試しました)。サンプルのSWFファイル自体に何か問題があると思い始めていましたが、他のswfsでテストしたところ、すべてこの動作がありました。

以下のコードは、グーグルが公開した「SWFObject2HTMLおよびJavaScriptジェネレーターv1.2」を使用して生成されました。

swfobjectライブラリを逆にしようとしましたが、率直に言って、コードが難読化されているか、私をはるかに超えているため、パラメータを設定している場所や、さらにライブラリを自動ロードしている場所を見つけることができません。

とにかく、助けてください!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
            <head>
                <title></title>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <script type="text/javascript" src="swfobject/swfobject.js"></script> <!--path is correct-->
                <script type="text/javascript">
                    swfobject.registerObject("myFlashContent", "9.0.0");
                </script>
            </head>
            <body>
                <div>
                    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="600" id="myFlashContent" align="middle">
                        <param name="movie" value="swfObject2.2-is-retarded.swf" />
                        <param name="play" value="false" />
                        <param name="loop" value="false" />
                        <param name="menu" value="false" />
                        <param name="quality" value="autohigh" />
                        <param name="scale" value="noscale" />
                        <param name="wmode" value="transparent" />
                        <!--[if !IE]>-->
                        <object type="application/x-shockwave-flash" data="dwfObject2.2-is-retarded.swf" width="400" height="600" align="middle">
                            <param name="play" value="false" />
                            <param name="loop" value="false" />
                            <param name="menu" value="false" />
                            <param name="quality" value="autohigh" />
                            <param name="scale" value="noscale" />
                            <param name="wmode" value="transparent" />
                        <!--<![endif]-->
                            <a href="http://www.adobe.com/go/getflashplayer">
                                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                            </a>
                        <!--[if !IE]>-->
                        </object>
                        <!--<![endif]-->
                    </object>
                </div>
            </body>
        </html>
4

1 に答える 1

1

<param name="play" value="false" />動画の再生を停止するようには設計されていません。SWFのみが停止します。

ほとんどのビデオプレーヤーSWFはタイムラインベースではなく、代わりにActionScriptベースです。これは、それらがほぼ100%ASであることを意味します。これは通常、1つまたは2つのフレームのみで構成されていることを意味します。プロジェクトにフレームが1つしかなく、プロジェクトがActionScriptに依存して処理を行っている場合、最初のフレームでSWFを停止しても効果はありません...フレーム1のActionScriptは引き続き実行されます。次に、リンクされたビデオは引き続きロードされ、再生されます。

したがって、実行する必要があるのは、プレーヤーのSWFに、自動再生を防ぐために設定できる内部変数があるかどうかを判断することです。次に、これは「自動再生」パラメータではなく、 FlashVarsパラメータを使用してSWFに伝達する必要があります。このパラメータは、ロード時にSWFがフレーム1を超えないようにFlashPlayerに指示するだけです。これは、ActionScriptの実行を妨げるものではなく、ビデオコントローラーから完全に独立しています。

たとえば、ビデオプレーヤーSWFが「autostart」という名前の内部変数を使用し、引数としてブール値を受け入れる場合は、次のように記述します。

<param name="flashvars" value="autostart=false" />

ビデオプレーヤーSWFのドキュメントをチェックして、使用可能なflashvarを確認してください。

于 2009-12-11T07:23:38.277 に答える