0

ユーザーが Adob​​e AIR v3.8 に自動更新すると、ローカル ディスクから HtmlLoader インスタンスに読み込まれるインタラクティブな SWF が正しく機能しなくなる既存のアプリケーションがあります。マウス カーソルがウィンドウの隅に固定され、動かなくなります。ロードしている HTML 内の何かに問題を絞り込みました。wmode プロパティを "opaque" から "window" に変更すると、マウスが機能します。以下のように wmode="opaque" のままにしておくと、マウスカーソルが動かなくなります。

私たちが読み込んでいる SWF は、さまざまな人々によってさまざまなレベルの品質でコーディングされています。アプリケーションをさまざまなコーディング手法から保護するために、HTMLLoader インスタンスを使用してアプリケーションを「サンドボックス化」します。このインスタンスは、HTML ファイルをロードし、次に SWF をロードします。これにより、ロードされた SWF が親アプリ (AIR アプリ) まで歩いて行き、マウスをいじるなどの不快なことをするのを防ぎます。これは数年間うまくいきました。現在、これらの SWF は正しく機能しません。

以下は HTMLLoader を設定するために使用しているコードで、その下は HTML です。

` import core.abstract.ICoreFactory; core.abstract.ui.IInteractiveRewardPlayer をインポートします。core.concrete.Instances をインポートします。

import domain.curriculum.Reward;

import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.html.HTMLLoader;
import flash.net.URLRequest;

import mx.containers.Canvas;
import mx.containers.VBox;
import mx.core.UIComponent;
import mx.logging.*;

public class InteractiveRewardContainer extends Canvas implements IInteractiveRewardPlayer
{       

    private static var _logger:ILogger = Log.getLogger("InteractiveRewardContainer");   
    private var _html:HTMLLoader;   
    public function InteractiveRewardContainer()
    {
        super();
    }

    public function addToDisplay(container:VBox):void
    {
        container.addChild(this);
    }

    public function startReward(reward:Reward, width:int, height:int):void
    {
        _html = new HTMLLoader();
        var bitmapHolder:UIComponent = new UIComponent();
        var mySprite:Sprite = new Sprite();

        var file:String = Instances.coreFactory.resourceLoader.returnHTMLRewardFileName(reward);
        _logger.info("File=" + file);
        var urlReq:URLRequest = new URLRequest(file);

        bitmapHolder.addChild(_html);
        _html.width = width;
        _html.height = height;
        _html.load(urlReq);
        mySprite.addChild(_html);
        bitmapHolder.addChild(mySprite);
        this.addChild(bitmapHolder);    

        this.width = width;
        this.height = height;
    }

    public function stopReward():void
    {   
        _html.loadString("<html></html>");
    }
}

`

および HTML の一部。wmode 属性に注意してください。「ウィンドウ」に変更すると、マウスの問題は解決しますが、表示の問題が発生します。 <embed src="76381.swf" quality="high" bgcolor="#869ca7" id="RightClickDemo" width="100%" height="100%" name="Bicycle" align="middle" menu="false" play="true" loop="false" quality="high" wmode="opaque" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> この問題を解決するために私たちができることはありますか?

4

1 に答える 1