Dobrý deň . Prosím vás ,ako môžem odstrániť obrázok ? Som začiatočník a neviem ako to spraviť . Skúšal som to takto ,ale nešlo to :
if (sPos.X > MaxX)
{
mytexture.Remove();
}
Kód bol písany v metóde Update()
V metóde LoadContent() mám toto :
mytexture = Content.Load<Texture2D>("ball");
A úplne na začiatku toto :
Texture2D mytexture;
Ale nejde mi to odstrániť . Prosím ,poradte mi .
Fórum › .NET
Odstránenie obrázku
Keď som dal ten kód (tvoj vyššie) do metódy Update() ,tak už to ide ako má . Len neviem či sa ten obrázok odstráni . Už nebude v tom programe ?
Ospravedlňujem sa za nepresné zadanie môjho problému . Lepšie to popíšem :
Mám loptičku . Má naprogramované ,aby sa od okrajov okna odrážala . Ale ja som chcel spraviť ,aby sa neodrážala ,ale vymazala sa . Ten kód som chcel potom použiť v jeden hre ,kde som zase chcel spraviť ,aby sa vymazávali asteroidy . Ale teraz som si to chcel vyskúšať na niečom menšiom . Pošlem aj kód pre ukážku :
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace MyFirstGame
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D mytexture;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
}
protected override void Initialize()
{
base.Initialize();
}
Vector2 sPos = Vector2.Zero;
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
mytexture = Content.Load<Texture2D>("ball");
}
protected override void UnloadContent()
{
}
Vector2 sSpeed = Vector2.One;
protected override void Update(GameTime gameTime)
{
if (Keyboard.GetState().IsKeyDown(Keys.Escape))
this.Exit();
sPos += sSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds * 500;
int MaxX = graphics.GraphicsDevice.Viewport.Width + mytexture.Width;
int MinX = 0;
int MaxY = graphics.GraphicsDevice.Viewport.Height - mytexture.Height;
int MinY = 0;
if (sPos.X > MaxX)
{
sSpeed.X *= -1;
sPos.X = MaxX;
}
else if (sPos.X < MinX)
{
sSpeed.X *= -1;
sPos.X = MinX;
}
if (sPos.Y > MaxY)
{
sSpeed.Y *= -1;
sPos.Y = MaxY;
}
else if (sPos.Y < MinY)
{
sSpeed.Y *= -1;
sPos.Y = MinY;
}
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
spriteBatch.Draw(mytexture, sPos, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
Bude. Zůstane viset v ContentManageru. Ale je otázka, jestli to vadí. Jak si ty asteroidy představuješ?
EDIT: Respektive takhle - Load() ty textury cachuje, takže jsou sdílené a pokud tam nebudeš mít hromadu textur, které brzy nikde nepotřebuješ, tak uvolňování nemusíš řešit. Případně si vystačíš s Content.Unload() na konci levelu.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odstránenie diakritiky — založil muhahaha
Odstranenie suboru — založil Tayson
Odstranenie diakritiky — založil HowIDied
Odstránenie diakritiky — založil Hudacik
Odstranenie tagu <big /> — založil Lordest
Moderátoři diskuze