在GestureWorks TouchSprite中实现stageWebView

时间:2012-06-18 15:40:57

标签: actionscript-3 flex

我正在尝试在GestureWorks AIR应用程序中创建一个组件,该组件在touchsprite容器中呈现stageWebView。鉴于stageWebView不是显示对象,这可能吗?

以下是代码:

包视图 {

import com.gestureworks.core.GestureWorks;
import com.gestureworks.core.TouchSprite;
import com.gestureworks.events.GWGestureEvent;
import com.modestmaps.Map;
import com.modestmaps.events.MapEvent;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.geom.Rectangle;
import flash.media.StageWebView;
import flash.net.URLLoader;
import flash.net.URLRequest;



public class webView extends TouchSprite
{

    private var urlAddress:String = "http://google.com";

    public var stageWebView:StageWebView = new StageWebView();

    private var ts:TouchSprite;

    public function webView()
    {
        super();
        init();

    }

    private function init():void 
    {


        ts = new TouchSprite();
        ts.width = 500;
        ts.height = 500;
        ts.x = 200;
        ts.y = 100;
        ts.rotation = 45;
        ts.scaleX = 0.5;
        ts.scaleY = 0.5;

        ts.gestureEvents = true;
        ts.disableAffineTransform = false;
        ts.gestureList = { "n-drag":true, "n-scale":true, "n-rotate":true };
        ts.addEventListener(GWGestureEvent.DRAG, gestureDragHandler);
        ts.addEventListener(GWGestureEvent.ROTATE, gestureRotateHandler);
        ts.addEventListener(GWGestureEvent.SCALE, gestureScaleHandler);


        if(StageWebView.isSupported == true)
        {

            stageWebView.stage = this.stage;
            stageWebView.viewPort = new Rectangle(0,0, 500, 500);
            //stageWebView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, locationChangedHandler);
            //stage.scaleMode = StageScaleMode.EXACT_FIT;
            //this.stage.addEventListener(Event.RESIZE, resizeEvent);

            getURL();
        }
        else
        {
            urlAddress = "StageWebView not supported";
        }
        ts.addChild(stageWebView as DisplayObject);
        addChild(ts);
    }

    protected function getURL():void
    {
        stageWebView.loadURL(urlAddress);

        //stageWebView.addEventListener(Event.COMPLETE,handleLoad);


    }

1 个答案:

答案 0 :(得分:1)

没有。由于StageWebView不是显示对象,因此您无法将其添加到另一个要自动管理的对象中。

您可以从精灵手动管理它 - 当显示精灵时,显示Web视图,调整精灵的大小,调整Web视图的大小等。

如果你的网页视图在渲染后覆盖整个TouchSprite,我相当确定你的精灵不会收到手势事件 - 那些将由原生组件处理。