亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? balls.java

?? java2d的源碼分析
?? JAVA
字號:
/* * @(#)Balls.java	1.17 99/04/23 * * Copyright (c) 1998, 1999 by Sun Microsystems, Inc. All Rights Reserved. *  * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software; and ii) Licensee does not utilize the software in a manner * which is disparaging to Sun. *  * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. *  * This software is not designed or intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */package demos.Mix;import java.awt.*;import java.awt.image.*;import java.awt.event.*;import javax.swing.*;import AnimatingContext;import DemoSurface;import DemoPanel;import CustomControls;/** * Animated color bouncing balls with custom controls. */public class Balls extends DemoSurface implements AnimatingContext, CustomControls {    private static Color colors[] =             { Color.red, Color.orange, Color.yellow, Color.green.darker(),              Color.blue, new Color(75, 00, 82), new Color(238,130,238) };    private long now, deltaT, lasttime;    private boolean active;    private DemoControls controls;    protected Ball balls[] = new Ball[colors.length];    protected boolean clearToggle;    public Balls() {        setBackground(Color.white);        for (int i = 0; i < colors.length; i++) {            balls[i] = new Ball(colors[i], 30);        }        balls[0].isSelected = true;        balls[3].isSelected = true;        balls[4].isSelected = true;        balls[6].isSelected = true;        controls = new DemoControls(this);    }    public String[] getCustomControlsConstraints() {        return new String[] { BorderLayout.NORTH };    }    public Component[] getCustomControls() {        return new Component[] { (Component) controls };    }    public void customControlsThread(int state) {        if (state == CustomControls.START) {            controls.start();        } else if (state == CustomControls.STOP) {            controls.stop();        }    }    public void reset(int w, int h) {        if (w > 400 && h > 100) {            controls.combo.setSelectedIndex(5);        }    }    public void step(int w, int h) {        if (lasttime == 0) {            lasttime = System.currentTimeMillis();        }        now = System.currentTimeMillis();        deltaT = now - lasttime;        active = false;        for (int i = 0; i < balls.length; i++) {            if (balls[i] == null) {                return;            }            balls[i].step(deltaT, w, h);            if (balls[i].Vy > .02 || -balls[i].Vy > .02 ||                    balls[i].y + balls[i].bsize < h) {                active = true;            }        }        if (!active) {            for (int i = 0; i < balls.length; i++) {                balls[i].Vx = (float)Math.random() / 4.0f - 0.125f;                balls[i].Vy = -(float)Math.random() / 4.0f - 0.2f;            }            clearToggle = true;        }    }    public void drawDemo(int w, int h, Graphics2D g2) {        for (int i = 0; i < balls.length; i++) {            Ball b = balls[i];            if (b == null || b.imgs[b.index] == null || !b.isSelected) {                continue;            }            g2.drawImage(b.imgs[b.index], (int) b.x, (int) b.y, this);        }        lasttime = now;    }    public static void main(String argv[]) {        final DemoPanel dp = new DemoPanel(new Balls());        JFrame f = new JFrame("Java2D Demo - Balls");        f.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {System.exit(0);}            public void windowDeiconified(WindowEvent e) {                 dp.surface.start();             }            public void windowIconified(WindowEvent e) {                 dp.surface.stop();             }        });        f.getContentPane().add("Center", dp);        f.pack();        f.setSize(new Dimension(400,300));        f.show();        dp.surface.start();    }    static class Ball {            public int bsize;        public float x, y;        public float Vx = 0.1f;        public float Vy = 0.05f;        public int nImgs = 5;        public BufferedImage imgs[];        public int index = (int) (Math.random() * (nImgs-1));            private final float inelasticity = .96f;        private final float Ax = 0.0f;        private final float Ay = 0.0002f;        private final float Ar = 0.9f;        private final int UP = 0;        private final int DOWN = 1;        private int indexDirection = UP;        private boolean collision_x, collision_y;        private float jitter;        private Color color;        private boolean isSelected;                public Ball(Color color, int bsize) {            this.color = color;            makeImages(bsize);        }                public void makeImages(int bsize) {            this.bsize = bsize*2;            int R = bsize;            byte[] data = new byte[R * 2 * R * 2];            int maxr = 0;            for (int Y = 2 * R; --Y >= 0;) {                int x0 = (int) (Math.sqrt(R * R - (Y - R) * (Y - R)) + 0.5);                int p = Y * (R * 2) + R - x0;                for (int X = -x0; X < x0; X++) {                    int x = X + 15;                    int y = Y - R + 15;                    int r = (int) (Math.sqrt(x * x + y * y) + 0.5);                    if (r > maxr) {                        maxr = r;                    }                    data[p++] = r <= 0 ? 1 : (byte) r;                }            }                imgs = new BufferedImage[nImgs];                int bg = 255;            byte red[] = new byte[256];            red[0] = (byte) bg;            byte green[] = new byte[256];            green[0] = (byte) bg;            byte blue[] = new byte[256];            blue[0] = (byte) bg;                for (int r = 0; r < imgs.length; r++) {                float b = 0.5f + (float) ((r+1f)/imgs.length/2f);                for (int i = maxr; i >= 1; --i) {                    float d = (float) i / maxr;                    red[i] = (byte) blend(blend(color.getRed(), 255, d), bg, b);                    green[i] = (byte) blend(blend(color.getGreen(), 255, d), bg, b);                    blue[i] = (byte) blend(blend(color.getBlue(), 255, d), bg, b);                }                IndexColorModel icm = new IndexColorModel(8, maxr + 1,                            red, green, blue, 0);                DataBufferByte dbb = new DataBufferByte(data, data.length);                int bandOffsets[] = {0};                WritableRaster wr = Raster.createInterleavedRaster(dbb,                    R*2,R*2,R*2,1, bandOffsets,null);                imgs[r] = new BufferedImage(icm, wr,icm.isAlphaPremultiplied(),null);            }        }                private final int blend(int fg, int bg, float fgfactor) {            return (int) (bg + (fg - bg) * fgfactor);        }                public void step(long deltaT, int w, int h) {            collision_x = false;            collision_y = false;                jitter = (float) Math.random() * .01f - .005f;                x += Vx * deltaT + (Ax / 2.0) * deltaT * deltaT;            y += Vy * deltaT + (Ay / 2.0) * deltaT * deltaT;            if (x <= 0.0f) {                x = 0.0f;                Vx = -Vx * inelasticity + jitter;                collision_x = true;            }            if (x + bsize >= w) {                x = w - bsize;                Vx = -Vx * inelasticity + jitter;                collision_x = true;            }            if (y <= 0) {                y = 0;                Vy = -Vy * inelasticity + jitter;                collision_y = true;            }            if (y + bsize >= h) {                y = h - bsize;                Vx *= inelasticity;                Vy = -Vy * inelasticity + jitter;                collision_y = true;            }            Vy = Vy + Ay * deltaT;            Vx = Vx + Ax * deltaT;                if (indexDirection == UP) {                index++;             }            if (indexDirection == DOWN) {                --index;             }            if (index+1 == nImgs) {                indexDirection = DOWN;            }            if (index == 0) {                indexDirection = UP;            }        }    }  // End class Ball    static class DemoControls extends JPanel implements ActionListener, Runnable {        Balls demo;        JToolBar toolbar;        JComboBox combo;        Thread thread;        public DemoControls(Balls demo) {            this.demo = demo;            setBackground(Color.gray);            add(toolbar = new JToolBar());            toolbar.setFloatable(false);            addTool("Clear", true);            addTool("R", demo.balls[0].isSelected);            addTool("O", demo.balls[1].isSelected);            addTool("Y", demo.balls[2].isSelected);            addTool("G", demo.balls[3].isSelected);            addTool("B", demo.balls[4].isSelected);            addTool("I", demo.balls[5].isSelected);            addTool("V", demo.balls[6].isSelected);            add(combo = new JComboBox());            combo.addItem("10");            combo.addItem("20");            combo.addItem("30");            combo.addItem("40");            combo.addItem("50");            combo.addItem("60");            combo.addItem("70");            combo.addItem("80");            combo.setSelectedIndex(2);            combo.addActionListener(this);            addMouseListener(new MouseAdapter() {                public void mouseClicked(MouseEvent e) {                    if (thread == null) start(); else stop();                }            });        }        public void addTool(String str, boolean state) {            JButton b = (JButton) toolbar.add(new JButton(str));            b.setBackground(state ? Color.green : Color.lightGray);            b.setSelected(state);            b.addActionListener(this);        }        public void actionPerformed(ActionEvent e) {            if (e.getSource() instanceof JComboBox) {                int size = Integer.parseInt((String) combo.getSelectedItem());                for (int i = 0; i < demo.balls.length; i++) {                    demo.balls[i].makeImages(size);                }                return;            }            JButton b = (JButton) e.getSource();            b.setSelected(!b.isSelected());            b.setBackground(b.isSelected() ? Color.green : Color.lightGray);            if (b.getText().equals("Clear")) {                demo.clearSurface = b.isSelected();            } else {                int index = toolbar.getComponentIndex(b)-1;                demo.balls[index].isSelected = b.isSelected();            }        }        public Dimension getPreferredSize() {            return new Dimension(200,37);        }        public void start() {            if (thread != null) {                return;            }            thread = new Thread(this);            thread.setPriority(Thread.MIN_PRIORITY);            thread.setName("Mix.Balls DemoControls Thread");            thread.start();        }        public synchronized void stop() {            if (thread != null) {                thread.interrupt();            }            thread = null;            notifyAll();        }        public void run() {            try { thread.sleep(999); } catch (Exception e) { return; }            Thread me = Thread.currentThread();            ((JButton) toolbar.getComponentAtIndex(2)).doClick();            while (thread == me) {                try {                    thread.sleep(222);                } catch (InterruptedException e) { return; }                if (demo.clearToggle) {                    if (demo.clearSurface) {                        combo.setSelectedIndex((int) (Math.random()*5));                    }                    ((JButton) toolbar.getComponentAtIndex(0)).doClick();                    demo.clearToggle = false;                }            }            thread = null;        }    } // End DemoControls} // End Balls

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美偷拍一区二区| 欧美在线观看视频一区二区| 亚洲另类中文字| 成人一区二区三区中文字幕| 水野朝阳av一区二区三区| 久久午夜电影网| 91精品国产日韩91久久久久久| 欧美电影在线免费观看| 美腿丝袜亚洲综合| 日韩欧美一级二级三级久久久| 亚洲日本一区二区三区| 欧美理论在线播放| 亚洲欧美色综合| 欧美国产一区视频在线观看| 精品污污网站免费看| 97超碰欧美中文字幕| 国产91精品欧美| 国产精品自拍三区| 精品影视av免费| 九色porny丨国产精品| 中文字幕五月欧美| 久久先锋影音av| 久久久噜噜噜久噜久久综合| 精品理论电影在线观看| 欧美一个色资源| 日韩视频一区在线观看| 日韩视频在线你懂得| 日韩区在线观看| 精品福利视频一区二区三区| 91精品麻豆日日躁夜夜躁| 91精品国产手机| 精品久久久网站| 欧美激情一区二区| 一区二区日韩电影| 日本亚洲免费观看| 国产精品综合一区二区| 波波电影院一区二区三区| 99亚偷拍自图区亚洲| 欧美日韩成人在线| 日韩免费成人网| 国产精品理论片| 亚洲在线视频网站| 久久国产精品色婷婷| 成人黄动漫网站免费app| 91麻豆蜜桃一区二区三区| 欧美丰满嫩嫩电影| 欧美激情中文字幕一区二区| 午夜久久久久久久久 | 日韩一级片在线播放| 久久精品一区二区三区四区| 亚洲免费在线观看| 国产一区在线精品| 欧美久久久久久久久中文字幕| 国产喂奶挤奶一区二区三区| 亚洲在线视频一区| 国产成人av电影在线观看| 欧美日韩亚洲综合在线 | 91在线小视频| 精品国产123| 久久精品国产精品亚洲精品| 色8久久精品久久久久久蜜| 国产日产亚洲精品系列| 天天射综合影视| 欧美高清视频在线高清观看mv色露露十八| 91麻豆福利精品推荐| 国产激情一区二区三区桃花岛亚洲| 首页亚洲欧美制服丝腿| 日本大胆欧美人术艺术动态 | 另类小说图片综合网| 色悠悠亚洲一区二区| 国产校园另类小说区| 久久国产人妖系列| 精品国产一区二区三区久久久蜜月| 亚洲国产日韩精品| 欧美在线啊v一区| 国产亚洲欧美一级| 国产一区二区三区免费在线观看| 欧美日韩国产大片| 美女精品一区二区| 7777精品伊人久久久大香线蕉完整版 | 蜜桃视频在线一区| 日韩免费高清av| 国产99久久久国产精品| 欧美激情综合五月色丁香| 不卡高清视频专区| 亚洲黄色在线视频| 欧美三区在线观看| 日韩一区精品视频| 在线不卡欧美精品一区二区三区| 亚洲成av人片| 欧美成人猛片aaaaaaa| 成人av在线网站| 一区二区成人在线观看| 欧美一区午夜精品| 丁香另类激情小说| 亚洲国产日日夜夜| 国产偷国产偷亚洲高清人白洁| 一本大道久久a久久精品综合| 国产精品视频线看| 欧美日韩在线免费视频| 国产精品一区二区你懂的| 一区二区三区在线观看视频| www日韩大片| 欧美日韩一区二区三区不卡| 风流少妇一区二区| 天天色综合天天| 一区二区三区鲁丝不卡| 久久久激情视频| 欧美大尺度电影在线| 欧美羞羞免费网站| gogo大胆日本视频一区| 国产一区二区三区久久悠悠色av| 日韩精品一二三| 国产精品传媒视频| 国产欧美日本一区二区三区| 久久久久亚洲蜜桃| 国产日韩精品久久久| 91久久奴性调教| 夜夜爽夜夜爽精品视频| 欧美日本国产一区| 狠狠色丁香婷婷综合| 精品免费99久久| 欧美午夜精品免费| 国内精品久久久久影院薰衣草| 国产精品美女久久福利网站| 91麻豆精品国产91久久久更新时间 | 高清在线观看日韩| 九九久久精品视频| 精品亚洲porn| 香蕉成人啪国产精品视频综合网| 亚洲欧洲综合另类在线| 亚洲一区av在线| 亚洲综合一区二区三区| 亚洲精品日日夜夜| 国产精品欧美一区喷水| 国产欧美精品国产国产专区| 国产精品久久久久婷婷二区次| 欧美国产精品劲爆| 成人欧美一区二区三区小说| 亚洲色欲色欲www| 亚洲综合区在线| 韩国精品在线观看| 顶级嫩模精品视频在线看| 成人av网站在线观看免费| 91丨porny丨在线| 精品视频在线免费看| 欧美www视频| 国产精品久久久久久久久快鸭 | 91国在线观看| 欧美丰满美乳xxx高潮www| 国产日韩精品一区二区浪潮av| 亚洲免费av在线| 高清国产一区二区| 91精品在线观看入口| 国产精品色哟哟网站| 日韩高清在线观看| 成人激情综合网站| 51精品国自产在线| 国产亚洲综合av| 首页国产欧美久久| 色哟哟精品一区| 国产精品黄色在线观看| 爽好多水快深点欧美视频| 成人久久视频在线观看| www国产亚洲精品久久麻豆| 亚洲猫色日本管| 国产成人av电影在线观看| 欧美精品vⅰdeose4hd| 一区二区三区影院| av欧美精品.com| 国产亚洲福利社区一区| 美女网站在线免费欧美精品| 色哦色哦哦色天天综合| 最近日韩中文字幕| av在线不卡观看免费观看| 日韩欧美色电影| 天堂av在线一区| 欧美剧情片在线观看| 香蕉久久夜色精品国产使用方法| 91成人免费网站| 亚洲视频网在线直播| 国产一区二区不卡| ...av二区三区久久精品| 成人ar影院免费观看视频| 亚洲国产精品t66y| 成人综合在线观看| 亚洲欧洲制服丝袜| 欧美日韩免费一区二区三区视频| 亚洲桃色在线一区| 欧美主播一区二区三区| 免费成人在线播放| 久久精子c满五个校花| 成人激情综合网站| 亚洲成人在线网站| 久久久一区二区三区| 成人美女视频在线观看| 亚洲欧美一区二区三区孕妇| 91麻豆精品国产无毒不卡在线观看| 蜜桃久久久久久| 久久精品网站免费观看|