0

我正在尝试在 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);


    }
4

1 回答 1

1

不可以。由于StageWebView不是显示对象,因此不能将其添加到另一个对象中进行自动管理。

您可以从 sprite 手动管理它——当 sprite 显示时,显示 web 视图,当 sprite 调整大小时,调整 web 视图大小等。

如果您的 web 视图在渲染后覆盖了整个视图TouchSprite,我相当肯定您的精灵不会收到手势事件——这些将由本机组件处理。

于 2012-06-18T19:18:16.607 回答