AS3 As3IsoLib添加Sprite

时间:2012-10-30 15:40:36

标签: actionscript-3

我正在尝试将图像添加到精灵然后将其添加到网格中。图像的原始大小为276x202。然而,当它被添加到网格中时,它的大小会增加。

http://i.imgur.com/P1Jlq.png

结果是

http://i.imgur.com/0UPBH.png

public class main extends MovieClip
{

    public function main() 
    {
        var view:IsoView = new IsoView();
        view.setSize((stage.stageWidth), stage.stageHeight);
        view.clipContent = true;
        addChild(view);

        var gridHolder:IsoScene = new IsoScene();
        view.addScene(gridHolder);
        var scene:IsoScene = new IsoScene();
        view.addScene(scene);

        graphics.beginFill(0x000000, 1);
        graphics.drawRect(0, 0, 800, 600);graphics.endFill();

        var grid:IsoGrid = new IsoGrid();
        grid.cellSize = 40;
        grid.setGridSize(20, 20, 0);
        gridHolder.addChild(grid);
        gridHolder.render();

        //var box:IsoBox = new IsoBox();
        //box.setSize(40, 40, 40);
        //box.moveTo(80, 80, 0);
        //scene.addChild(box);

        var player:IsoSprite;
        var myLoader:Loader;

        myLoader=new Loader();
        myLoader.load(new URLRequest('imgs/DesertTankNE.png'));
        //myLoader.width = 5; //Makes image disappear no matter what value is set.
        //myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete); //Doesn't change anything if we say on completion of loading image add it to the sprite.

        player = new IsoSprite();
        player.sprites = [myLoader];

        //player.setSize(1,1,0); //Doesn't seem to affect anything no matter what size specified.
        //player.width = 2; //Same as above

        scene.addChild(player);
        scene.render();

    }

}

我在加载图像时尝试设置图像的宽度和高度,并尝试设置精灵的大小。前者使图像不会出现,无论设置什么值,后者似乎不会影响任何值。

1 个答案:

答案 0 :(得分:0)

您的as3isolib代码完全没有问题,并且代码没有以任何方式调整图片大小。将坦克图像与网格单元的大小(应该是20像素宽,20像素高)进行比较,您应该看到它们的相对大小正常。

唯一的问题是整个Flash阶段正在调整大小。您是否正在浏览器上测试您的Flash电影?确保您没有将Flash影片的宽度和高度设置为HTML中容器的100%。如果flash影片在div中并且flash被告知宽度和高度为100%,它将延伸到div的任何大小。

看到你的代码我认为你希望你的舞台大小为800x600;使用元标记 SWF 将您的Flash影片设置为这些尺寸,例如:

[SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")]

如果您使用的是Flash Builder,则可能需要多次清理项目(Project - > Clean)以清除以前的编译器设置。测试你的SWF电影在broswer之外(双击SWF文件在本地flash播放器上打开它)并确保它具有正确的尺寸。你现在应该看到坦克和网格单元的大小合适。

如果要在浏览器中测试它,请不要使用Flash Builder(或Flash Pro)生成的HTML包装器。使用swfobject创建自己的html并设置正确的宽度和高度,例如:

<script type="text/javascript">
    swfobject.embedSWF("myIsoTank.swf", "flash_container_div", "800", "600", "10", "expressInstall.swf");
</script>

这应该摆脱你的问题。