【问题标题】:Loading an external swf - dimensions not correct加载外部 swf - 尺寸不正确
【发布时间】:2013-02-05 23:01:24
【问题描述】:

我有一个主 swf 文件。它有一个简单的空影片剪辑,实例名称为 mc_external_swf。

现在我使用文档类来加载外部 swf 文件。外部文件加载并可见,但其尺寸不适合影片剪辑容器内,来自外部 swf 的一些内容在影片剪辑容器外部重叠。请看下图。

这是用于加载外部 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();
    }
}

}

它可能发生在 away3d 库中。我曾尝试加载其他 swf,但它们非常适合。但是这个 swf 特别不适合在影片剪辑容器中。我认为它与 away3d 中的 view3d 有关,但我不确定。

【问题讨论】:

    标签: actionscript-3 flash external away3d


    【解决方案1】:

    我看到的所有关于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;
    }
    

    它将阻止 swf 缩放。

    【讨论】:

    • 已经试过了。它们似乎都不起作用。此外,当我使用 object.x 或 object.y 定位对象时,它会将自身定位在主 swf 坐标系上,而不是在本地坐标系上。 (如果你明白的话)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2011-03-29
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多