好吧,我在這裏有一個奇怪的。我正在嘗試使用Windows窗體來創建基本的圖塊引擎,但是我的一些代碼只是......沒有發生。我會發布有問題的塊。Windows窗體代碼沒有執行?
private void MapEditor_Load(object sender, EventArgs e)
{
LoadImageList();
FixScrollBarScales();
cboCodeValues.Items.Clear();
cboCodeValues.Items.Add("ENEMY");
cboCodeValues.Items.Add("CHEST");
cboCodeValues.Items.Add("NPC");
for (int x = 0; x < 100; x++)
cboMapNumber.Items.Add(x.ToString().PadLeft(3, '0'));
cboMapNumber.SelectedIndex = 0;
TileMap.EditorMode = true;
backgroundToolStripMenuItem.Checked = true;
}
這應該在窗體加載時調用,對嗎?代碼潛入LoadImageList(),其中包含:
private void LoadImageList()
{
string filepath = Application.StartupPath +
@"\Content\Textures\IndoorTileSet.png";
Bitmap tileSheet = new Bitmap(filepath);
int tilecount = 0;
for(int y = 0; y < tileSheet.Height/TileMap.TileHeight; y++)
{
for(int x = 0; x < tileSheet.Width/TileMap.TileWidth; x++)
{
Bitmap newBitmap = tileSheet.Clone(
new System.Drawing.Rectangle(
x * TileMap.TileWidth,
y * TileMap.TileHeight,
TileMap.TileWidth,
TileMap.TileHeight),
System.Drawing.Imaging.PixelFormat.DontCare);
imgListTiles.Images.Add(newBitmap);
string itemName = "";
if(tilecount == 0)
itemName = "Empty";
if(tilecount == 1)
itemName = "Floor";
listTiles.Items.Add(new ListViewItem(itemName, tilecount++));
}
}
}
位圖加載正確,但隨後的整個MapEditor_Load方法只是停止工作。 tileCount似乎是調試器中的局部變量,其值爲0,但調試器從不在執行分配的行上執行斷點。我完全不知道爲什麼它會這樣做,而且這讓我感到瘋狂。任何幫助? 哦,我把位圖加載到try/catch塊中,看看它是否以奇怪的方式處理異常,但我沒有運氣。它不會拋出異常。用更新後的版本替換我的IndoorTileSet後,我立即開始出現此問題。我嘗試了一次徹底的重建,但沒有成功。
我讀了一些關於具有類似問題的人的東西,他們不得不聲明某些東西是一個類的實例,但是這篇文章不夠詳細,不知道我是否會出錯,或者我可能需要聲明的實例才能工作......或者實例甚至意味着什麼,真的。
順便說一下,看看'Path.Combine',以確保你不會搞亂那個文件路徑。 – MPelletier
否則,如果您將斷點放在LoadImageList的第一行,您是否可以逐行執行? – MPelletier
我會檢查補丁,謝謝你的建議。我可以遍歷LoadImageList,但它在我提到的那些行之前跳出了方法。我問過問題的其他人提到它可能是64位操作系統的問題。我會在下面發表他們的建議。 – TimBKJ