Stop button se java applet

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
kokaki
Δημοσιεύσεις: 39
Εγγραφή: 07 Ιουν 2005 12:52

Stop button se java applet

Δημοσίευση από kokaki » 04 Ιούλ 2005 13:38

:hammer:
re paidia exw ena script image fader, sto opoio exw balei kapoies eikones alla thelw na prosthesw ena koumpaki gia na stamatw to script kai na to ksekinaw opote thelw, giati diaforetika einai polu kourastiko!

Hellppp!!!!

Άβαταρ μέλους
Dr_Java
Δημοσιεύσεις: 218
Εγγραφή: 15 Αύγ 2003 16:42
Τοποθεσία: πειραιας
Επικοινωνία:

Stop button se java applet

Δημοσίευση από Dr_Java » 05 Ιούλ 2005 14:40

Με μπέρδεψες!!! στο τίτλο λές για Java applet και εδώ για script... :-? Τεσπά εαν μιλάς για java applet τι θες στο περίπου για βοήθεια... κώδικα??? Αυτό που μπορώ να σου πώ σαν ιδέα χωρίς να έχω δει τπτ είναι να παίξεις με thread και timer.
Εικόνα

kokaki
Δημοσιεύσεις: 39
Εγγραφή: 07 Ιουν 2005 12:52

Stop button se java applet

Δημοσίευση από kokaki » 07 Ιούλ 2005 15:23

loipon akou exw ena java applet to opoio allazei eikones diarkos kai eiani kourastiko, thelw na to kanw me to patima enos button na stamatei h estw na deixnei mono mia fora tis fotografies..
apla egw den exw idea pws na to kanw h an ginete.. Elpizw na katalabes..

Κώδικας: Επιλογή όλων

import java.awt.*;
import java.awt.image.*;
import java.applet.*;
import java.util.*;

public class ImageFader extends Applet implements Runnable {
	Image targetImage;
	Vector images;
	int[] targetPix;
	Dimension targetSize;
	Thread thread;
	String message;
	int bgColor = 0xff000000;
	boolean zoomIn = false;
	int speed = 1;
	String imageDir = ".";
	
	public void init() {
		images = new Vector();
		String s = getParameter("imageDir");
		if (s != null) imageDir = s;
		s = getParameter("images");
		StringTokenizer st = new StringTokenizer(s, "|");
		for (int i = 0; st.hasMoreTokens(); i++) {
			Image image = getImage(getDocumentBase(), imageDir + "/" + st.nextToken().trim());
			ImageLoader loader = new ImageLoader(image, new MediaTracker(this));
			images.addElement(loader);
		}
		s = getParameter("bgColor");
		if (s != null) bgColor = Integer.parseInt(s, 16);
		s = getParameter("zoom");
		if (s != null && s.trim().equals("in")) zoomIn = true;
		s = getParameter("speed");
		if (s != null) {
			speed = Integer.parseInt(s);
			if &#40;speed <= 1&#41; speed = 1;
			else if &#40;speed > 10&#41; speed = 10;
		&#125;
		targetSize = size&#40;&#41;;
		&#40;&#40;ImageLoader&#41;images.elementAt&#40;0&#41;&#41;.start&#40;&#41;;
		message = "Loading image...";
	&#125;
	
	public void start&#40;&#41; &#123;
		if &#40;thread == null&#41; &#123;
			thread = new Thread&#40;this&#41;;
			thread.start&#40;&#41;;
		&#125;
	&#125;
	
	public void stop&#40;&#41; &#123;
		if &#40;thread != null&#41; &#123;
			thread.stop&#40;&#41;;
			thread.stop = null;
		&#125;
	&#125;
	
	synchronized void draw&#40;ImageLoader loader, int viewSize, ImageLoader next, int nextSize, double rate&#41; &#123;
		int&#91;&#93; lpix = loader.getPixels&#40;&#41;;
		int lw = loader.getWidth&#40;&#41;;
		int lh = loader.getHeight&#40;&#41;;

		int&#91;&#93; npix = next.getPixels&#40;&#41;;
		int nw = next.getWidth&#40;&#41;;
		int nh = next.getHeight&#40;&#41;;

		int lp, np;
		for &#40;int y = 0; y < targetSize.height; y++&#41; &#123;
			for &#40;int x = 0; x < targetSize.width; x++&#41; &#123;
				int xx = lw / 2 + &#40;x - targetSize.width / 2&#41; * lw * viewSize / 200 / targetSize.width;
				int yy = lh / 2 + &#40;y - targetSize.height / 2&#41; * lh * viewSize / 200 / targetSize.height;
				if &#40;xx < 0 || xx >= lw || yy < 0 || yy >= lh&#41; &#123;
					lp = bgColor;
				&#125; else &#123;
					lp = lpix&#91;xx + yy * lw&#93;;
				&#125;

				xx = nw / 2 + &#40;x - targetSize.width / 2&#41; * nw * nextSize / 200 / targetSize.width;
				yy = nh / 2 + &#40;y - targetSize.height / 2&#41; * nh * nextSize / 200 / targetSize.height;
				if &#40;xx < 0 || xx >= nw || yy < 0 || yy >= nh&#41; &#123;
					np = bgColor;
				&#125; else &#123;
					np = npix&#91;xx + yy * nw&#93;;
				&#125;

				int lr = &#40;lp & 0x00ff0000&#41; >> 16;
				int lg = &#40;lp & 0x0000ff00&#41; >> 8;
				int lb = &#40;lp & 0x000000ff&#41; ;

				int nr = &#40;np & 0x00ff0000&#41; >> 16;
				int ng = &#40;np & 0x0000ff00&#41; >> 8;
				int nb = &#40;np & 0x000000ff&#41; ;

				int r = &#40;&#40;int&#41;&#40;lr * &#40;1.0 - rate&#41; + nr * rate&#41;&#41; << 16;
				int g = &#40;&#40;int&#41;&#40;lg * &#40;1.0 - rate&#41; + ng * rate&#41;&#41; << 8;
				int b = &#40;&#40;int&#41;&#40;lb * &#40;1.0 - rate&#41; + nb * rate&#41;&#41;;

				targetPix&#91;x + y * targetSize.width&#93; = 0xff000000 + r + g + b;
			&#125;
		&#125;
		targetImage.flush&#40;&#41;;
		repaint&#40;&#41;;
	&#125;

	void draw&#40;ImageLoader loader, int viewSize&#41; &#123;
		draw&#40;loader, viewSize, loader, viewSize, 1.0&#41;;
	&#125;
	
	public synchronized void paint&#40;Graphics g&#41; &#123;
		if &#40;message != null&#41; &#123;
			g.setColor&#40;Color.black&#41;;
			g.fillRect&#40;0, 0, size&#40;&#41;.width, size&#40;&#41;.height&#41;;
			g.setColor&#40;Color.cyan&#41;;
			g.drawString&#40;message, 10, 20&#41;;
		&#125; else &#123;
			g.drawImage&#40;targetImage, 0, 0, null&#41;;
		&#125;
	&#125;
	
	public void update&#40;Graphics g&#41; &#123;
		paint&#40;g&#41;;
	&#125;
	
	public void run&#40;&#41; &#123;
		int current = 0;
		int viewSize = 100;		// screen size = 200

		targetPix = new int&#91;targetSize.width * targetSize.height&#93;;
		targetImage = createImage&#40;
			new MemoryImageSource&#40;targetSize.width, targetSize.height, targetPix, 0, targetSize.width&#41;&#41;;
		ImageLoader loader = &#40;ImageLoader&#41;images.elementAt&#40;0&#41;;
		for &#40;;;&#41; &#123;
			if &#40;loader.isLoaded&#40;&#41;&#41; &#123;
				message = null;
				break;
			&#125; else if &#40;loader.isError&#40;&#41;&#41; &#123;
				message = "Error&#58; image loading...";
				repaint&#40;&#41;;
				return;
			&#125;
			try &#123;
				thread.sleep&#40;100&#41;;
			&#125; catch &#40;InterruptedException e&#41; &#123;
				e.printStackTrace&#40;&#41;;
			&#125;
		&#125;
		while &#40;true&#41; &#123;
			if &#40;viewSize >= 300&#41; &#123;
				viewSize -= 200;
				current = &#40;current + 1&#41; % images.size&#40;&#41;;
			&#125;
			loader = &#40;ImageLoader&#41;images.elementAt&#40;current&#41;;
			ImageLoader next = &#40;ImageLoader&#41;images.elementAt&#40;&#40;current + 1&#41; % images.size&#40;&#41;&#41;;
			if &#40;next.isLoaded&#40;&#41;&#41; &#123;
				if &#40;viewSize >= 200&#41; &#123;
					draw&#40;loader, zoomIn?&#40;300 - viewSize&#41;&#58;viewSize,
						next, zoomIn?&#40;500 - viewSize&#41;&#58;&#40;viewSize - 200&#41;,
						&#40;double&#41;&#40;viewSize - 200&#41;/ 100.0&#41;;
				&#125; else &#123;
					draw&#40;loader, zoomIn?&#40;300 - viewSize&#41;&#58;viewSize&#41;;
				&#125;
			&#125; else &#123;
				if &#40;!next.isAlive&#40;&#41;&#41; &#123;
					next.start&#40;&#41;;
				&#125;
				draw&#40;loader, zoomIn?&#40;300 - viewSize&#41;&#58;viewSize&#41;;
			&#125;
			try &#123;
				thread.sleep&#40;20&#41;;
			&#125; catch &#40;InterruptedException e&#41; &#123;
				e.printStackTrace&#40;&#41;;
			&#125;
			viewSize += speed;
		&#125;
	&#125;
&#125;

class ImageLoader extends Thread &#123;
	protected Image image;
	protected boolean loaded;
	protected boolean error;
	protected int&#91;&#93; pixels;
	protected MediaTracker mt;
	protected int myId;

	protected static int id = 0;

	public ImageLoader&#40;Image image, MediaTracker mt&#41; &#123;
		this.mt = mt;
		this.image = image;
		myId = id;
		mt.addImage&#40;image, id++&#41;;
	&#125;

	public boolean isLoaded&#40;&#41; &#123;
		return loaded;
	&#125;

	public boolean isError&#40;&#41; &#123;
		return error;
	&#125;

	public Image getImage&#40;&#41; &#123;
		return image;
	&#125;

	public int&#91;&#93; getPixels&#40;&#41; &#123;
		return pixels;
	&#125;

	public int getWidth&#40;&#41; &#123;
		return image.getWidth&#40;null&#41;;
	&#125;

	public int getHeight&#40;&#41; &#123;
		return image.getHeight&#40;null&#41;;
	&#125;

	public void run&#40;&#41; &#123;
		setPriority&#40;Thread.NORM_PRIORITY - 2&#41;;
		try &#123;
			mt.waitForID&#40;myId&#41;;
		&#125; catch &#40;InterruptedException e&#41; &#123;
			e.printStackTrace&#40;&#41;;
			return;
		&#125;
		if &#40;mt.isErrorID&#40;myId&#41;&#41; &#123;
			error = true;
			return;
		&#125;
		int w = image.getWidth&#40;null&#41;;
		int h = image.getHeight&#40;null&#41;;
		pixels = new int&#91;w * h&#93;;
		PixelGrabber pg = new PixelGrabber&#40;image, 0, 0, w, h, pixels, 0, w&#41;;
		try &#123;
			pg.grabPixels&#40;&#41;;
		&#125; catch &#40;InterruptedException e&#41; &#123;
			e.printStackTrace&#40;&#41;;
			return;
		&#125;
		loaded = true;
	&#125;
&#125;

Elpizw na mporeseis na katalabeis!! :roll:

Άβαταρ μέλους
Dr_Java
Δημοσιεύσεις: 218
Εγγραφή: 15 Αύγ 2003 16:42
Τοποθεσία: πειραιας
Επικοινωνία:

Stop button se java applet

Δημοσίευση από Dr_Java » 09 Ιούλ 2005 17:50

Λοιπον το έτρεξα στο pc μου αλλα μου χτυπάει error...
Τεσπά αυτό που ήθελα να δοκιμάσω είναι το παρακάτω

Κώδικας: Επιλογή όλων

  JButton stopAnim = new JButton&#40; "Stop Animation" &#41;;
      	stopAnim.addActionListener&#40; 
      
         new ActionListener&#40;&#41; &#123;
      
            public void actionPerformed&#40; ActionEvent event &#41; 
            &#123;
              ImageLoader.stop&#40;&#41;;
            &#125;
         &#125;
      	&#41;;
O παραπάνω κώδικας αυτό που κάνει και είναι να σου δημιουργει ένα button έχωντας ενσωματομένο έναν ActionListener ο οποίος αυτό που κάνει είναι να σταματάει την class ImageLoader που από'τι είδα εκει του δίνεις την κίνηση στις εικόνες σου. Λογικά αυτό θα πρέπει να δουλέψει σε εσένα. Υπόψην δεν έχω δουλέψει αλλη φορά κάτι τέτοιο απλά ρίχνοντας μια ματιά στο κώδικά σου το μονο που μπορούσα να κάνω με βάση τη λογική ήταν το παραπάνω.
Εικόνα

kokaki
Δημοσιεύσεις: 39
Εγγραφή: 07 Ιουν 2005 12:52

Stop button se java applet

Δημοσίευση από kokaki » 11 Ιούλ 2005 10:40

:-? kai an sou pw oti den kserw pou na to balw pos tha to pareis?>!?!!!>

Mporeis se parakalo na mou peis se pio simio na balo kai ti alles allages na kanw?!

Άβαταρ μέλους
Dr_Java
Δημοσιεύσεις: 218
Εγγραφή: 15 Αύγ 2003 16:42
Τοποθεσία: πειραιας
Επικοινωνία:

Stop button se java applet

Δημοσίευση από Dr_Java » 11 Ιούλ 2005 12:23

Loipon... logika ayto tha prepei na mpei mesa sti methodo init() Twra gia allages den kserw pros to parwn mexri na moy peis ean soy xtypisei error sto compile...
Εικόνα

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες