Actionscript 3 AdobeAIR:MovieClip内部的StageWebView

Actionscript 3 AdobeAIR:MovieClip内部的StageWebView,actionscript-3,air,webview,Actionscript 3,Air,Webview,我有一个简单的问题。 我想在电影剪辑中有一个舞台视图,所以如果电影剪辑被移动,舞台就会被移动到 var view:MovieClip = new MovieClip(); view.y=50; view.x=10; view.height=stage.stageHeight-50; view.width=stage.fullScreenWidth; addChild(view); var webView:StageWebView = new StageWebView(); webView=n

我有一个简单的问题。 我想在电影剪辑中有一个舞台视图,所以如果电影剪辑被移动,舞台就会被移动到

var view:MovieClip = new MovieClip();
view.y=50;
view.x=10;
view.height=stage.stageHeight-50;
view.width=stage.fullScreenWidth;
addChild(view);

var webView:StageWebView = new StageWebView();

webView=new StageWebView();
webView.stage=view.stage;
webView.viewPort=new Rectangle(0,0,stage.fullScreenWidth,stage.stageHeight);
webView.loadURL("http://www.google.com/");
即使“视图”mc的y值为50,x值为10,webView仍位于x:0和y:0。当然,我可以只更改视口设置,但我确实需要WebView与“view”mc一起移动


提前感谢您并致以最良好的问候。

不,这是不可能的。StageWebView位于显示列表的顶部并独立于显示列表。
您必须删除StageWebView,并在电影剪辑完成移动后重新应用它。

不,这是不可能的。StageWebView位于显示列表的顶部并独立于显示列表。
您必须删除StageWebView,并在movieclip完成移动后重新应用它。

它不在显示列表中,因此您只能通过调整viewPort属性来调整位置

您可以在开始移动时将StageWebView绘制为MovieClip中的位图,然后在移动完成后删除位图并更新StageWebView

编辑以提供快速代码示例:

这段代码显然有点粗糙,但它应该不会闪烁或延迟

dragBar = new Sprite();
addChild(dragBar);
dragBitmap = new Bitmap();
dragBitmap.y = 20;
dragBar.addChild(dragBitmap);
dragBar.graphics.beginFill(0xFF0000);
dragBar.graphics.drawRect(0, 0, 800, 20);
dragBar.x = 20;
dragBar.y = 40;
dragBar.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown)

stageWeb = new StageWebView();
stageWeb.viewPort = new Rectangle(dragBar.x, dragBar.y+20, 800, 600);
stageWeb.stage = stage;
stageWeb.loadURL('http://www.google.co.uk/');

private function handleMouseDown(event:MouseEvent):void
{
    dragBar.startDrag();
    dragBar.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
    var bd:BitmapData = new BitmapData(800, 600);
    stageWeb.drawViewPortToBitmapData(bd);
    dragBitmap.bitmapData = bd;
    stageWeb.stage = null;
}

private function handleMouseUp(event:MouseEvent):void
{
    dragBar.stopDrag();
    dragBar.removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
    dragBitmap.bitmapData = null;
    stageWeb.stage = stage;
    stageWeb.viewPort = new Rectangle(dragBar.x, dragBar.y+20, 800, 600);
}

它不在显示列表中,因此只能通过调整“视口”属性来调整位置

您可以在开始移动时将StageWebView绘制为MovieClip中的位图,然后在移动完成后删除位图并更新StageWebView

编辑以提供快速代码示例:

这段代码显然有点粗糙,但它应该不会闪烁或延迟

dragBar = new Sprite();
addChild(dragBar);
dragBitmap = new Bitmap();
dragBitmap.y = 20;
dragBar.addChild(dragBitmap);
dragBar.graphics.beginFill(0xFF0000);
dragBar.graphics.drawRect(0, 0, 800, 20);
dragBar.x = 20;
dragBar.y = 40;
dragBar.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown)

stageWeb = new StageWebView();
stageWeb.viewPort = new Rectangle(dragBar.x, dragBar.y+20, 800, 600);
stageWeb.stage = stage;
stageWeb.loadURL('http://www.google.co.uk/');

private function handleMouseDown(event:MouseEvent):void
{
    dragBar.startDrag();
    dragBar.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
    var bd:BitmapData = new BitmapData(800, 600);
    stageWeb.drawViewPortToBitmapData(bd);
    dragBitmap.bitmapData = bd;
    stageWeb.stage = null;
}

private function handleMouseUp(event:MouseEvent):void
{
    dragBar.stopDrag();
    dragBar.removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
    dragBitmap.bitmapData = null;
    stageWeb.stage = stage;
    stageWeb.viewPort = new Rectangle(dragBar.x, dragBar.y+20, 800, 600);
}

因此,在不重新加载整个内容的情况下,不可能移动StageWebView?因此,在不重新加载整个内容的情况下,不可能移动StageWebView?哇,这真的很好用。唯一的问题是,始终存在一个帧,其中位图从剪辑中删除,视口重新附着到webView。我是否可以向webView添加一个事件侦听器,该事件侦听器在视口连接到webView时触发,以便在webView实际可见时删除位图?抱歉,我不知道。如果有机会的话,我今晚下班后会很快看一看。哇,真的很流利。唯一的问题是,始终存在一个帧,其中位图从剪辑中删除,视口重新附着到webView。我是否可以向webView添加一个事件侦听器,该事件侦听器在视口连接到webView时触发,以便在webView实际可见时删除位图?抱歉,我不知道。如果有机会的话,我今晚下班后会好好看看。