Adobe Air: StageWebView внутри MovieClip - PullRequest
0 голосов
/ 01 марта 2012

У меня простой вопрос.Я хочу иметь StageWebView внутри MovieClip, поэтому, если MovieClip перемещается, сцена перемещается в.

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/");

Даже если m «view» имеет значение yy 50 и значение x 10webView находится в x: 0 и y: 0.Конечно, я мог бы просто изменить настройки viewPort, но мне действительно нужно, чтобы WebView перемещался с «view» mc.

Заранее спасибо и наилучшими пожеланиями.

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Его нет в списке отображения, поэтому вы можете настроить положение только путем настройки свойства viewPort.

Вы можете нарисовать StageWebView в растровом изображении внутри мувиклипа, когда вы начнете перемещать его, а затем удалить растровое изображение иобновите StageWebView после завершения перемещения.

Документы AS3 для drawViewPortToBitmapData ()

Изменить, чтобы предоставить пример быстрого кода:

Этот код, конечно, немного грубоват, но он должен работать без каких-либо миганий или задержек.

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);
}
0 голосов
/ 01 марта 2012

Нет, это невозможно.StageWebView находится сверху и отдельно от списка отображения.Вам нужно будет удалить StageWebView и повторно применить его после завершения перемещения видеоклипа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...