0

パネルのメニュー項目がトリミングされているという問題が発生しているため、パネルの上部より下に表示されません。すべてが正常に機能し、そのポイントより下のものは表示されません。このコードでそのパネルがどこにあるかを確認すると

if (Position.X <= 400)
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(700, 200), Item1, Item2, Item3, Item4);
else
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(100, 200), Item1, Item2, Item3, Item4);

最初の4つはメニュー全体を切り取り、次の8つは1つのセクションを除くすべてを切り取ります。チェックしない場合(2行目を使用)、最初の8つはすべてを切り取り、次の8つは1つのセクションを除くすべてを切り取ります。(補足:各セクションの高さは100ピクセルです。)

各パネル、およびメニューとメニュー項目を初期化するために使用されるコードは次のとおりです。

for (int i = 0; i <= 7; i++)
{
    for (int q = 0; q <= 7; q++)
    {
        Panel Panel = new Panel();
        Panel.Initialize(TestTextureStill, TestTextureHover, TestTextureActive, new Vector2 (q * 100 + 50, i * 100 + 50), MenuTexture, menuItem1, menuItem2, menuItem3, menuItem4);
        Panels[i, q] = Panel;
    }
}

パネルメニュー

if (Position.X <= 400)
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(700, 200), Item1, Item2, Item3, Item4);
else
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(100, 200), Item1, Item2, Item3, Item4);

描画コードは次のとおりです。

GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
for (int i = 0; i <= 7; i++)
{
    for (int q = 0; q <= 7; q++)
        Panels[i, q].Draw(spriteBatch);
}
spriteBatch.End();
base.Draw(gameTime);

Panel.Draw()の内部

if (selected)
    panelMenu.Draw(spriteBatch);
spriteBatch.Draw(PanelTextureCurrent, Position, null, Color.White, 0f, new Vector2(Width / 2, Height / 2), 1f, SpriteEffects.None, 0f);

PanelMenu.Draw()の内部

spriteBatch.Draw(PanelMenuTexture, Position, null, Color.White, 0f, new Vector2(Width / 2, Height / 2), 1f, SpriteEffects.None, 0f);
spriteBatch.Draw(Item1.CurrentTexture, new Vector2(Position.X, 50), null, Color.White, 0f, new Vector2(WidthMI1 / 2, HeightMI1 / 2), 1f, SpriteEffects.None, 0f);
spriteBatch.Draw(Item2.CurrentTexture, new Vector2(Position.X, 150), null, Color.White, 0f, new Vector2(WidthMI2 / 2, HeightMI2 / 2), 1f, SpriteEffects.None, 0f);
spriteBatch.Draw(Item3.CurrentTexture, new Vector2(Position.X, 250), null, Color.White, 0f, new Vector2(WidthMI3 / 2, HeightMI3 / 2), 1f, SpriteEffects.None, 0f);
spriteBatch.Draw(Item4.CurrentTexture, new Vector2(Position.X, 350), null, Color.White, 0f, new Vector2(WidthMI4 / 2, HeightMI4 / 2), 1f, SpriteEffects.None, 0f);

他に何か必要な場合は、私に知らせてください!

4

1 に答える 1

1

すべてのパネルが描画されたら、メニューとアイテムの描画をに移動します。これは、パネルがメニューと重なって、メニューが消えてしまうためです。

于 2012-09-03T23:14:40.240 に答える