Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (603)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  [solved] [libGdx] Why sprite.setColor() doesn't work ?  (Read 349 times)
0 Members and 1 Guest are viewing this topic.
Offline alaslipknot
« Posted 2014-06-02 20:39:50 »

Hello everyone  Grin !!!

i have a quick question about tinting a sprite, so i have a white circle PNG image, which i want to draw it in different colors.
In the Wiki, the closest and most "legit" thing to use is sprite.setColor(theNewColor), however this doesn't work, so i found myself forced to use spriteBatch.setColor(theNewColor) then go back to the default color after finishing drawing the object.

My question is, why the first approach doesn't work ? (i tried it in the Create method and also in the Render method)

thank you

(very happy to ask here again  Grin )

"It's not at all important to get it right the first time. It's vitally important to get it right the last time."
Offline Cero
« Reply #1 - Posted 2014-06-02 22:01:51 »

should work !
Just tried it since I rarely use the Sprite class.

show some code I guess.

Offline alaslipknot
« Reply #2 - Posted 2014-06-02 22:15:28 »

this doesn't work :

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
package com.aladine.rgbx;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class RgbX extends ApplicationAdapter {
   SpriteBatch batch;
   Texture circleImg;
   Sprite center, redPad, bluePad, greenPad, yellowPad;
   Color whiteCol, redCol, greenCol, blueCol, yellowCol;

   
   public static final int WIDTH = 800;
   public static final int HEIGHT = 480;
   public static Vector2 screenCenter;

   private Group group;
   private Stage stage;

   @Override
   public void create() {
      batch = new SpriteBatch();
      circleImg = new Texture("circle.png");
      screenCenter = new Vector2(WIDTH / 2, HEIGHT / 2);

      center = new Sprite(circleImg);
      center.setPosition(screenCenter.x - center.getWidth() / 2,
            screenCenter.y - center.getWidth() / 2);

      // create the colors
      setColors();
      // change the sprite color to blue
      center.setColor(blueCol);

   }

   @Override
   public void render() {
      Gdx.gl.glClearColor(0, 0, 0, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

      batch.begin();
      batch.draw(center, center.getX(), center.getY(), center.getOriginX(),
            center.getOriginY(), center.getWidth(), center.getHeight(), 1,
            1, center.getRotation());
      batch.end();

   }

   private void setColors() {
      redCol = new Color(0.9f, 0.42f, 0.42f, 1);
      blueCol = new Color(0.42f, 0.42f, 0.9f, 1);
      greenCol = new Color(0.42f, 0.9f, 0.9f, 1);
      yellowCol = new Color(0.98f, 0.99f, 0.42f, 1);
      whiteCol = new Color(1, 1, 1, 1);
   }
}


this work :

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
package com.aladine.rgbx;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class RgbX extends ApplicationAdapter {
   SpriteBatch batch;
   Texture circleImg;
   Sprite center, redPad, bluePad, greenPad, yellowPad;
   Color whiteCol, redCol, greenCol, blueCol, yellowCol;

   
   public static final int WIDTH = 800;
   public static final int HEIGHT = 480;
   public static Vector2 screenCenter;

   private Group group;
   private Stage stage;

   @Override
   public void create() {
      batch = new SpriteBatch();
      circleImg = new Texture("circle.png");
      screenCenter = new Vector2(WIDTH / 2, HEIGHT / 2);

      center = new Sprite(circleImg);
      center.setPosition(screenCenter.x - center.getWidth() / 2,
            screenCenter.y - center.getWidth() / 2);

      // create the colors
      setColors();
     

   }

   @Override
   public void render() {
      Gdx.gl.glClearColor(0, 0, 0, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

      batch.begin();
      batch.setColor(blueCol);
      batch.draw(center, center.getX(), center.getY(), center.getOriginX(),
            center.getOriginY(), center.getWidth(), center.getHeight(), 1,
            1, center.getRotation());
      batch.end();

   }

   private void setColors() {
      redCol = new Color(0.9f, 0.42f, 0.42f, 1);
      blueCol = new Color(0.42f, 0.42f, 0.9f, 1);
      greenCol = new Color(0.42f, 0.9f, 0.9f, 1);
      yellowCol = new Color(0.98f, 0.99f, 0.42f, 1);
      whiteCol = new Color(1, 1, 1, 1);
   }
}


thank you

"It's not at all important to get it right the first time. It's vitally important to get it right the last time."
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline pitbuller
« Reply #3 - Posted 2014-06-02 22:57:25 »

use Sprite method to draw it not SpriteBatch method. You are calling draw function that takes textureRegion as parameter and Sprite extent TextureRegion so its valid code but does not work like you are trying to use it.
Offline alaslipknot
« Reply #4 - Posted 2014-06-02 23:31:32 »

use Sprite method to draw it not SpriteBatch method. You are calling draw function that takes textureRegion as parameter and Sprite extent TextureRegion so its valid code but does not work like you are trying to use it.

Thank you this solved the problem  Grin

"It's not at all important to get it right the first time. It's vitally important to get it right the last time."
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (36 views)
2014-12-15 09:26:44

Mr.CodeIt (29 views)
2014-12-14 19:50:38

BurntPizza (61 views)
2014-12-09 22:41:13

BurntPizza (98 views)
2014-12-08 04:46:31

JscottyBieshaar (58 views)
2014-12-05 12:39:02

SHC (74 views)
2014-12-03 16:27:13

CopyableCougar4 (76 views)
2014-11-29 21:32:03

toopeicgaming1999 (136 views)
2014-11-26 15:22:04

toopeicgaming1999 (127 views)
2014-11-26 15:20:36

toopeicgaming1999 (37 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!