2016-04-05 19 views
0

Lütfen bu gözün nasıl hareket ettirileceğine veya yeniden boyayarak, iş parçacığıyla çalışıp göz kırpma yapıp yapamayacağınıza yardımcı olun. Çalışması için doğru kodları nereye yerleştireceğimi bilmiyorum. Lütfen bana yardım edin! Teşekkür ederim! o animasyon gelince her şey değişken hale gelirBu göz uygulaması nasıl hareket ettirilir veya göz kırpmayı nasıl sağlar?

import java.awt.*; 
import java.applet.*; 

public class Pucca extends Applet { 

public Pucca(){ 
setSize(700, 700); } 

//paint method 
public void paint(Graphics g){ 

Color white = new Color(255,255,255); 
g.setColor(white); 
g.fillOval(600, 100, 125, 125); //left white fill eye 

g.setColor(Color.BLA­CK); 
g.drawOval(600, 100, 125, 125); // left big black line eye 

g.setColor(white); 
g.fillOval(700, 100, 125, 125); //right white fill eye 

g.setColor(Color.BLA­CK); 
g.drawOval(700, 100, 125, 125); //right big black line eye 

Color blue = new Color(0, 160, 198); 
g.setColor(blue); 
g.fillOval(635, 130, 51, 51); // left blue fill eye 

g.setColor(Color.BLA­CK); 
g.drawOval(635, 130, 50, 50); // left black small line eye 

g.setColor(blue); 
g.fillOval(735, 130, 51, 51); // right blue fill eye 

g.setColor(Color.BLA­CK); 
g.drawOval(735, 130, 50, 50); // right black small line eye 

g.setColor(Color.BLA­CK); 
g.fillOval(650, 145, 20, 20); // left black iris 

g.setColor(Color.BLA­CK); 
g.fillOval(750, 145, 20, 20); // right black iris 

} 
} 
+0

Taşı sahip başlardım sen yanıp sönmesini, değişken taşımak istediğiniz öğeleri yapmanız gerekir, zaman içinde durumunu değiştirme yeteneği gerekir. Applet da resmen öldü, applet eklentisi kullanımdan kaldırıldı ve artık desteklenmiyor – MadProgrammer

+0

Yapacağım ilk şey, istenen değerleri etkilemek için bu çok sayıda değerin hangisinin değişmesi gerektiğine parmak basmasıdır. – MadProgrammer

+0

numaralı değerleri güncellemek için thread'ları nasıl kullanacağım konusunda endişeleniyorum 1) Neden bir applet'i kodluyorsunuz? Bunu belirten öğretmene bağlıysa, lütfen bunları [Neden CS öğreticilerinin ** Java uygulamalarını öğretmeyi ** durdurması gerektiğini] belirtin (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop öğretim-java uygulamaları /). 2) [Java Plugin desteğini kullanımdan kaldırılmış] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) ve [Plugin-Free Web'e Geçme] 'ye bakın. https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). .. –

cevap

1

: İşte kodudur. Ayrıca çok fazla sayıda kodunuz var (cidden, eğer bir gözü boyayabilirseniz, çok boyayabilirsiniz).

İhtiyacınız olan ilk şey, gözün tüm değerlerini olabildiğince değişken yapmaktır.

Aşağıdakiler göz büyüklüğünü ve konum değişkenini ve iris ve gözbebeği göz boyutunun küçültülmüş bir değerini oluşturur, bu da tüm sürecin daha kolay animasyon yapmasını sağlar.

Sonraki, değiştirmek istediğiniz değerlerin durumunu güncelleyebilen güncel bir döngüye ihtiyacınız vardır. Bunu basit tutmak için, öğrencinin zamanla değiştirilen bir değişken ofsetine sahip olmasını sağladım. Boyama Eğer üzerinde kontrole sahip olmayan veya hakkında haberdar edilecektir birçoğu nedenlerle herhangi bir sayı için ortaya çıkabilir olarak nereye konusunda çok dikkatli olmalı, böylece

Eyes

import java.applet.Applet; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.Rectangle; 

public class Pucca extends Applet { 

    public Pucca() { 
     setSize(700, 700); 
     Thread t = new Thread(new Runnable() { 
      private int xDelta = -1; 
      private int yDelta = 0; 
      private int blinkCount = 0; 

      @Override 
      public void run() { 
       while (true) { 
        try { 
         Thread.sleep(40); 
        } catch (InterruptedException ex) { 
        } 

        xOffset += xDelta; 
        double irisSize = eyeSize.width * irisScale; 
        double range = ((eyeSize.width - irisSize)/2); 
        if (xOffset <= -range) { 
         xOffset = -(int) range; 
         xDelta *= -1; 
        } else if (xOffset >= range) { 
         xOffset = (int) range; 
         xDelta *= -1; 
        } 
        blinkCount++; 
        if (blink && blinkCount > 10) { 
         blink = false; 
         blinkCount = 0; 
        } else if (blinkCount > 25) { 
         blink = true; 
         blinkCount = 0; 
        } 
        repaint(); 
       } 
      } 
     }); 
     t.setDaemon(true); 
     t.start(); 
    } 

    private boolean blink = false; 

    private int xOffset, yOffset = 0; 
    private Dimension eyeSize = new Dimension(125, 125); 
    private Point left = new Point(20, 20); 
    private Point right = new Point(left.x + 100, left.y); 
    private double irisScale = 0.4; 
    private double pupilScale = 0.16; 

//paint method 
    @Override 
    public void paint(Graphics g) { 
     super.paint(g); 

     paintEye(g, new Rectangle(left, eyeSize)); 
     paintEye(g, new Rectangle(right, eyeSize)); 

    } 

    protected void paintEye(Graphics g, Rectangle bounds) { 

     Color white = new Color(255, 255, 255); 

     if (blink) { 
      g.setColor(Color.YELLOW); 
     } else { 
      g.setColor(white); 
     } 
     g.fillOval(bounds.x, bounds.y, bounds.width, bounds.height); //left white fill eye 

     g.setColor(Color.BLACK); 
     g.drawOval(bounds.x, bounds.y, bounds.width, bounds.height); // left big black line eye 

     if (!blink) { 
      Color blue = new Color(0, 160, 198); 

      paintEyePartAt(g, bounds, irisScale, blue); 
      paintEyePartAt(g, bounds, pupilScale, Color.BLACK); 
     } 
    } 

    private void paintEyePartAt(Graphics g, Rectangle bounds, double delta, Color color) { 

     int width = (int) (bounds.width * delta); 
     int height = (int) (bounds.height * delta); 

     g.setColor(color); 
     g.fillOval(
       xOffset + bounds.x + ((bounds.width - width)/2), 
       yOffset + bounds.y + ((bounds.height - height)/2), 
       width, height); // left blue fill eye 
     g.setColor(Color.BLACK); 
     g.drawOval(
       xOffset + bounds.x + ((bounds.width - width)/2), 
       yOffset + bounds.y + ((bounds.height - height)/2), 
       width, 
       height); // left blue fill eye 
    } 
} 

Bu, işleri zorlaştırmaktadır ve değerleri değiştirdiğinizde.

Ayrıca Java Plugin support deprecated ve Moving to a Plugin-Free Web ve Why CS teachers should stop teaching Java applets'a da bir göz atmalısınız.

Küçükler yalnızca ölü bir teknolojidir ve bunları kullanmanın içerdiği karmaşıklıklardan dolayı, pencere tabanlı programlara dikkat etmeniz gerekir.

Şahsen, bir Painting in AWT and Swing bakmak ve Performing Custom Painting

+0

OMG! Teşekkür ederiz @MadProgrammer !!!!! :) Projem için çok büyük bir yardımın var! :) –

+0

Neden tüm spongebob uygulamamda verdiğiniz kodları eklediğimde neden bu kadar çok hata var? Lütfen bana tüm uygulamamı nasıl ekleyebilirim? Teşekkürler! –

+0

İşte spongebob uygulamasının tam kodlarım: –

İlgili konular