0

我正在尝试将图像添加到精灵然后将其添加到网格中。图像的原始尺寸为 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();

    }

}

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

4

1 回答 1

0

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

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

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

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

如果您使用的是 Flash Builder,则可能需要多次清理项目(项目 -> 清理)以清除以前的编译器设置。在浏览器之外测试您的 SWF 电影(双击 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>

这应该可以解决您的问题。

于 2012-10-30T22:01:59.933 回答