2012-10-30 88 views
0

我想將圖像添加到精靈然後將其添加到網格。圖像的原始大小是276x202。但是,當它被添加到網格時,它的大小會增加。AS3 As3IsoLib添加精靈

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(); 

    } 

} 

我試圖加載時,它設定圖像的寬度和高度,並且還嘗試設置子畫面的大小。前者使圖像不會出現,不管設置了什麼值,後者似乎也不會影響任何東西。

+0

我不熟悉isoLib框架,但對我來說,它看起來像你有一個縮放問題。如果IsoView從UIcomponent擴展而不是像調用setSize那樣會導致問題http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/core/UIComponent.html#width –

回答

0

您的as3isolib代碼絕對沒有錯,並且圖像沒有以任何方式被代碼調整大小。比較坦克圖像和網格單元的大小(應該是20像素寬×20像素高),你應該看到它們的相對大小是可以的。

唯一的問題是,整個閃光舞臺正在調整大小。你可能在瀏覽器上測試你的Flash影片嗎?確保您未將Flash影片的寬度和高度設置爲HTML中其容器的100%。如果Flash影片位於div中,並且Flash被告知寬度和高度均爲100%,則它將擴展到div的大小。

查看您的代碼我認爲您希望您的舞臺大小爲800x600;設置您的Flash影片的尺寸使用元標籤SWF,例如:

[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> 

這應該擺脫你的問題。