0

問題

Flash SWF を PHP ページにロードし、それを Facebook キャンバスにロードしています。FB ページの右側の広告領域に、ゲーム コンテンツの高さに関係なく垂直スクロール バーを作成するコンテンツがあります。私のゲームのキャンバスは、キャンバスのコンテンツ領域を完全に埋めるために流動的な高さになっています

私のゲームには、マウス ホイールによってトリガーされるズーム機能があります。

(ゲームをズームするために) マウス ホイールを使用すると、これもブラウザーによって取得され、コンテンツがスクロールされます。そのため、控えめに言っても望ましくない同時ズーム/スクロール効果が発生しています。

質問

FB アプリの iframe 内の私のゲーム コンテンツは、アプリの html ページを直接タップできないことを知っています。したがって、FB ページでプロパティを設定しようとしても無意味です。しかし、ゲーム コンテンツのスクロール イベントをキャッチして、ラッピング FB ページに到達しないようにする方法はありますか?

これが可能かどうかを知るのに十分なほどDOMを理解していません。イベントの伝播を止めることができるという点で、私は Flash 開発者のように考えています。スクロールイベントがどの方向に、またはどのDOM要素から発生するのかわかりません。

4

1 に答える 1

0

OK私はこれを解決しました(私は思う)...

FBアプリのスクロールが止まらなかったのは、キャンバスが流動的だとコンテンツがオーバーフローしないから?スクロールイベントをトリガーしません。ただし、マウスを介してスクロール イベントを生成するために必要なステップであるマウスホイール イベントをトリガーします。

コンテンツ div にコードを追加して、マウスホイール イベントをリッスンしました。次に、そのイベントをキャンセルして、iFrame の所有者への伝播を停止します。

<html>
<head>
    <script type="text/javascript">
        function init () 
        {
            //window.addEventListener('scroll', listener, false);
        }

    </script>
</head>

<body onload="init()">
    <script type="text/javascript">

        function onScrollHandler(event)
        {
            event.preventDefault();
            event.stopPropagation();

            //alert("scrolling");       
        }

    </script>

    <div id="content" onmousewheel="onScrollHandler(event)" onclick="alert('click')" style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px; background-color:#b0c4de;">
        content area
    </div>
</body>

于 2013-04-30T15:28:13.417 に答える