|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
[C#]Modificare una classe per passargli della variabili
Io ho questa classe:
Codice:
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;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace Primo_videogame
{
public class SpriteManager : Microsoft.Xna.Framework.DrawableGameComponent
{
SpriteBatch spriteBatch;
List<Sprite> spriteList = new List<Sprite>();
Texture2D tex1;
Vector2 pos1;
Vector2 spd1;
public SpriteManager(Game game)
: base(game)
{
}
public override void Initialize()
{
pos1 = new Vector2(10.0f, 1.0f);
spd1 = new Vector2(2.0f, 1.0f);
base.Initialize();
}
protected override void LoadContent()
{
tex1 = Game.Content.Load<Texture2D>("astronave2");
spriteBatch = new SpriteBatch(Game.GraphicsDevice);
//Aggiungiamo nuovi sprite----------------------
spriteList.Add(new AutoSprite(tex1, pos1, spd1));
base.LoadContent();
}
public override void Update(GameTime gameTime)
{
foreach (Sprite s in spriteList)
{
s.Update(gameTime);
}
base.Update(gameTime);
}
public override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
foreach (Sprite s in spriteList)
{
s.Draw(gameTime, spriteBatch);
}
base.Draw(gameTime);
spriteBatch.End();
}
}
}
Codice:
SpriteManager spritemanager = new SpriteManager(this); Components.Add(spritemanager); Perchè non so bene cosa e soprattutto dove devo modificare la classe... Grazie Ultima modifica di Mattyfog : 22-07-2009 alle 09:55. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Immagino dovrebbe essere sufficiente dotare la classe dei relativi getter e setter per quei due campi.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
uff non capisco come usarli
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
allora, tu hai messo il codice di questa classe SpriteManager e di come la utilizzi da qualche parte. dici che devi passare dei parametri quindi presumo a questa classe, visto che è l'unica cosa che vediamo. se così, passali al costruttore. oppure, se ti servono solo in un metodo, solo a quel determinato metodo.
un esempio: Codice:
public SpriteManager(Game game, Vector2 pos1tmp, Vector2 spd1tmp)
: base(game)
{
pos1 = pos1tmp;
spd1 = spd1tmp;
}
Codice:
SpriteManager spritemanager = new SpriteManager(this, new Vector2(0f, 0f), New Vector2(0f, 0f)); |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
Codice:
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;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace Primo_videogame
{
public class SpriteManager : Microsoft.Xna.Framework.DrawableGameComponent
{
SpriteBatch spriteBatch;
List<Sprite> spriteList = new List<Sprite>();
Texture2D tex1;
Vector2 pos1;
Vector2 spd1;
public SpriteManager(Game game, Vector2 pos1)
: base(game)
{
}
public override void Initialize()
{
///pos1 = new Vector2(10.0f, 1.0f);
spd1 = new Vector2(2.0f, 1.0f);
base.Initialize();
}
protected override void LoadContent()
{
tex1 = Game.Content.Load<Texture2D>("astronave2");
spriteBatch = new SpriteBatch(Game.GraphicsDevice);
//Aggiungiamo nuovi sprite----------------------
spriteList.Add(new AutoSprite(tex1, pos1, spd1));
base.LoadContent();
}
public override void Update(GameTime gameTime)
{
foreach (Sprite s in spriteList)
{
s.Update(gameTime);
}
base.Update(gameTime);
}
public override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
foreach (Sprite s in spriteList)
{
s.Draw(gameTime, spriteBatch);
}
base.Draw(gameTime);
spriteBatch.End();
}
}
}
Fatto sta che non cambia nulla qualsiasi valore io passi |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
il mio codice l'hai provato? ovviamente dovresti togliere l'inizializzazione in Initialize() o sovrascrivi i valori. |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
Quote:
Grazie infiniteeeeeeeee |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
figurati
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
è possibile fare in modo che delle variabili siano disponibili in tutta l'applicazione?
perchè ricevo questo errore: Il nome 'astronave1_position' non esiste nel contesto corrente (so che significa...) oppure non esistono i puntatori come in c++? perchè vorrei evitare di passare ai diversi metodi la variabile perchè al momento dell'uso potrebbe già essere cambiato il suo valore... |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
certo. crei una struct, dichiari la variabile che ti serve pubblica ed il gioco è fatto. io eviterei una cosa del genere comunque. impara bene la programmazione orientata agli oggetti. altrimenti posta un po' di codice, speiga bene quello che vuoi fare e ti aiutiamo noi.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:30.




















