2013-02-20 158 views
0

我有一個主要的swf文件。它有一個簡單的空白影片剪輯,實例名稱爲mc_external_swf。加載外部swf - 尺寸不正確

現在我使用文檔類來加載外部swf文件。外部文件加載並且可見,但其尺寸不適合在movieclip容器內部,外部swf中的某些內容與movieclip容器外部重疊。看下面的圖片。

這是用於加載外部swf文件的代碼。

var _swfLoader:Loader; 
    var _swfContent:MovieClip; 

    function goToPlay(e:MouseEvent=null):void 
    { 
     loadSWF("agameFLA.swf"); 
    }  


    public function loadSWF(path:String):void 
    { 
     var _req:URLRequest = new URLRequest(); 
     _req.url = path; 

     _swfLoader = new Loader(); 
     setupListeners(_swfLoader.contentLoaderInfo); 

     _swfLoader.load(_req); 
    } 

    function setupListeners(dispatcher:IEventDispatcher):void 
    { 
     dispatcher.addEventListener(Event.COMPLETE, addSWF); 
    } 

    function addSWF(event:Event):void 
    { 
     event.target.removeEventListener(Event.COMPLETE, addSWF); 
     event.target.removeEventListener(ProgressEvent.PROGRESS, preloadSWF); 
     _swfContent = event.target.content; 
     mc_external_swf.addChild(_swfContent); 
    } 

這裏是外部文件本身的代碼 - (其文檔類)

package 
{ 
import away3d.cameras.Camera3D; 
import away3d.cameras.lenses.PerspectiveLens; 
import away3d.containers.ObjectContainer3D; 
import away3d.containers.Scene3D; 
import away3d.containers.View3D; 
import away3d.controllers.HoverController; 
import away3d.entities.Mesh; 
import away3d.materials.ColorMaterial; 
import away3d.primitives.CubeGeometry; 

import flash.display.MovieClip; 

public class Main extends MovieClip 
{ 
    public var _view : View3D; 
    private var _scene:Scene3D; 
    private var _camera : Camera3D; 
    private var _hoverController:HoverController; 

    private var _container:ObjectContainer3D; 
    private var _cube:CubeGeometry; 
    private var _cubeMaterial:ColorMaterial; 
    private var _cubeMesh:Mesh; 

    public function Main() 
    { 
     addEventListener(Event.ADDED_TO_STAGE,init); 
    } 

    private function init(e:Event):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE,init); 
     iniScene(); 
     iniObjects(); 
    } 

    private function iniScene():void 
    {   
     _scene = new Scene3D(); 

     _view = new View3D(); 
     _view.backgroundColor = 0x666666; 
     _view.antiAlias = 4; 

     _camera= new Camera3D(); 
     _camera.lens = new PerspectiveLens(60); 
     _hoverController = new HoverController(_camera, null, 180, 0); 
     _hoverController.distance = 400; 
     _hoverController.steps = 16; 
     _view.camera = _camera; 

     this.addChild(_view); 
    } 

    private function iniObjects():void 
    { 
     _container = new ObjectContainer3D(); 
     _cube = new CubeGeometry(100, 100, 100, 20, 20, 20); 

     _cubeMaterial = new ColorMaterial(0x0000FF); 

     _cubeMesh = new Mesh(_cube, _cubeMaterial); 
     _cubeMesh.mouseEnabled = true; 
     _container.addChild(_cubeMesh); 
     _view.scene.addChild(_container); 
     this.addEventListener(Event.ENTER_FRAME, _onEnterFrame); 
     _onResize(); 
    } 

    private function _onResize(e:Event=null):void 
    { 
     _view.width = stage.stageWidth; 
     _view.height = stage.stageHeight; 
    } 

    private function _onEnterFrame(e:Event):void 
    { 
     _view.render(); 
    } 
} 

}

screenshot

它可能會發生在Away3D中圖書館。我試圖加載其他的swfs,但它們都很好。但是這個swf尤其不適合在動畫片段容器中。我認爲這與away3中的view3d有關,但我不確定。

回答

0

,我已經看到已經包括在主類下面的代碼上的Stage3D所有教程(或庫如Away3D中):

public function Main() 
{ 
    //wait until stage object is ready 
    addEventListener(Event.ADDED_TO_STAGE, addedHandler); 
} 

private function addedHandler(event:Event):void 
{ 
    removeEventListener(Event.ADDED_TO_STAGE, addedHandler); 
    stage.align = "TL"; //or use StageAlign.TOP_LEFT; 
    stage.scaleMode = "noScale"; //or use StageScaleMode.NO_SCALE; 
} 

它將從縮放停止瑞士法郎。

+0

已經試過了。他們似乎都沒有工作。另外,當我使用object.x或object.y定位一個對象時,它將自己定位在主要的swf座標系上,而不是本地的。 (如果你明白的話) – 2013-02-22 21:55:37