This site requires JavaScript, please enable it in your browser!
Greenfoot back
Mux
Mux wrote ...

2012/8/30

How to use the mouse wheel?

Mux Mux

2012/8/30

#
I want to zoom into my world and the best way to do this may be the mouse wheel. But I don't know how to get the movement of it ( forward / backward). So not the "is mouse button three is pressed" method or whatever the press thing is. Is there a way to get the movement?
kiarocks kiarocks

2012/8/30

#
Yes, extract that from this code:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import greenfoot.core.WorldHandler;  
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Cursor;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import java.awt.event.*;

public class world  extends World
{

    MouseInfo mouse;
    MouseImage mouseImage = new MouseImage();
    int mx,my;
    int prevx,prevy;
    int size = 5;
    int key = 0;
    Color color = Color.black;
    int alpha = 255;
    int mode = 0;
    ScrollingListener scroll = new ScrollingListener();
    JPanel panel = WorldHandler.getInstance().getWorldCanvas();  
    Cursor customCursor;
    
    boolean isDown = false;
    
    public world()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(500, 400, 1,false); 
        panel.addMouseWheelListener(scroll);
        //ImageIcon img = new ImageIcon("images/empty.png");
        //Image pointer = img.getImage(); 
        GreenfootImage image = new GreenfootImage("empty.png");
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        //Image cursorImage = toolkit.getImage("cursor.png");
        Point cursorHotSpot = new Point(12,12);
        customCursor = toolkit.createCustomCursor(image.getAwtImage(), cursorHotSpot, "Cursor");
        //panel.setCursor(customCursor);
        addObject(mouseImage,0,0);
    }
    
    public void act(){
        mouse = Greenfoot.getMouseInfo();
        if(mouse!=null){
            mx = mouse.getX();
            my = mouse.getY();
        }
        mouseImage.getImage().clear();
        mouseImage.getImage().fillOval(0,0,size,size);
        mouseImage.getImage().drawOval(0,0,size,size);
        mouseImage.setLocation(mx,my);
        size += scroll.getScroll();
        if(size<1){
            size = 1;
        }
        if(size>24){
            size = 24;
        }
        
        if(Greenfoot.mousePressed(null)){
            panel.setCursor(customCursor);
            isDown = true;
            key = mouse.getButton();
        }
        if(Greenfoot.mouseClicked(null)){
            isDown = false;
        }
        if(isDown){
            if(key==3){
                mouseImage.getImage().setColor(Color.WHITE);
                mouseImage.getImage().clear();
                mouseImage.getImage().fillOval(0,0,size,size);
                mouseImage.getImage().drawOval(0,0,size,size);
                mouseImage.getImage().setColor(Color.BLACK);
            }
            for(double i=0;i<1;i += .01){
                getBackground().drawImage(mouseImage.getImage(),(int)(i*mx + (1-i)*prevx+.01)-12,(int)(i*my + (1-i)*prevy+.01)-12);
            }
            if(key==3){
                mouseImage.getImage().drawOval(0,0,size,size);
            }
        }
        prevx = mx;
        prevy = my;
    }
}

class ScrollingListener implements MouseWheelListener
{
    int amount = 0;
    
    public void mouseWheelMoved(MouseWheelEvent e){
        amount += e.getWheelRotation();  
        e.consume();
    }
    
    public int getScroll(){
        int t = amount;
        amount = 0;
        return t;
    }
}
Mux Mux

2012/8/30

#
Thanks their for. I think i got it now.
You need to login to post a reply.