Anyone know how to change the pic of one object through the mouse click of another object?
if (Greenfoot.mouseClicked(this))
{
// get object reference if no readily available
// assume name as 'morpheus'
morpheus.updateImage("imageFilename.gif");
}Morpheus morpheus = new Morpheus(); addObject(morpheus, x_coord, y_coord); // assume object to be clicked on as 'Icon.class' addObject(new Icon(morpheus), x2_coord, y2_coord);
private Morpheus morpheus;
public Icon(Morpheus morph)
{
morpheus = morph;
// rest of constructor
}
public void act()
{
// some of act method (maybe)
if (Greenfoot.mouseClicked(this)) morpheus.updateImage("imageFilename.gif");
// rest of act method (maybe)
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class LightWorld here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class LightWorld extends World
{
private Light l1,l2;
/**
* Constructor for objects of class LightWorld.
*
*/
public LightWorld()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(600, 400, 1);
l1 = new Light();
addObject(l1, 71, 65);
l2 = new Light();
addObject(l2, 304, 60);
}
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Button here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Button extends Actor
{
private GreenfootImage sB0;
private GreenfootImage sB1;
private GreenfootImage sBDown;
private boolean wasBtnPushed;
public Button()
{
sB0 = new GreenfootImage ("Button0.png");
sB1 = new GreenfootImage ("Button1.png");
sBDown = new GreenfootImage ("ButtonDown.png");
setImage (sB0);
wasBtnPushed = false;
}
/**
* Act - do whatever the Button wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if (Greenfoot.mousePressed(this) && !wasBtnPushed)
{
setImage (sBDown);
wasBtnPushed = true;
}
if (!Greenfoot.mousePressed(this) && wasBtnPushed)
{
setImage (sB1);
wasBtnPushed = false;
}
}
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Light here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Light extends Actor
{
private GreenfootImage red;
private GreenfootImage blue;
private GreenfootImage off;
private int count;
public Light()
{
red = new GreenfootImage("red.png");
blue = new GreenfootImage("blue.png");
off = new GreenfootImage("Off.png");
setImage(off);
count = 0;
}
/**
* Act - do whatever the Light wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if (Greenfoot.mousePressed(this))
{
setImage(red);
count = count +1;
}
if (Greenfoot.mousePressed(this) && count == 2)
{
setImage(blue);
count = count +1;
}
if (Greenfoot.mousePressed(this) && count > 3)
{
setImage(off);
count = 0;
}
}
}public void act()
{
if (count == 0 && Greenfoot.mousePressed(this))
{
setImage(red);
count = count + 1;
}
if (count == 1 && Greenfoot.mousePressed(this))
{
setImage(blue);
count = count + 1;
}
if (count == 2 && Greenfoot.mousePressed(this))
{
setImage(off);
count = 0;
}
}import greenfoot.*;
public class Light extends Actor
{
private GreenfootImage[] image= {
new GreenfootImage("Off.png"),
new GreenfootImage("red.png"),
new GreenfootImage("blue.png") };
private state = 0; // same as your 'count'
public Light()
{
setImage(image[state]);
}
public void act()
{
if (Greenfoot.mouseClicked(this))
{
state = (state + 1) % 3;
setImage(image[state]);
}
}
}