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 ピクセル、高さ 20 ピクセル) と比較すると、それらの相対的なサイズが適切であることがわかります。

唯一の問題は、フラッシュ ステージ全体のサイズが変更されていることです。おそらくブラウザでフラッシュムービーをテストしていますか?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 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 に答える