In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Uncontrol's Clock 移植版

clock
created using proce55ing application | www.proce55ing.net
copyright© www.uncontrol.com | mannytan@uncontrol.com
2010-07-13 21:50:52
Get Adobe Flash player
by civet 08 Jan 2016
/**
 * Copyright civet ( http://wonderfl.net/user/civet )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8wCm
 */

// clock
// created using proce55ing application | www.proce55ing.net
// copyright© www.uncontrol.com | mannytan@uncontrol.com
// 2010-07-13 21:50:52
package
{
    import flash.system.Security;
    import frocessing.display.F5MovieClip3D;
    import frocessing.text.IFont;
    
    [SWF(width="480", height="480", backgroundColor="0xffffff", frameRate="30")]
    
    /**
     * uncontrol's Clock (port to frocessing)
     * @author civet
     */    
    public class Clock extends F5MovieClip3D
    {
        private static const PATH:String = "http://dreamana.com/"    
        public function Clock()
        {
            Security.loadPolicyFile(PATH + "crossdomain.xml");
        }
        
        // ************************************************************************
        // initialize
        // ************************************************************************
        public static const WIDTH:int = 480;
        public static const HEIGHT:int = 480;
        
        public var mouseStatus:Boolean = false;
        public var priorMouseStatus:Boolean = false;
        public var px:int, py:int, pz:int;
        public var i:int, j:int, k:int;
        public var counter:Number=1;
        public var time:String,s_hour:String,s_min:String, s_sec:String;
        public var pos_x:Number, pos_y:Number;
        public var radius:Number;
        public var SECOND_INC:Number = .0166;    // 1/60
        public var MINUTE_INC:Number = .0166;    // 1/60
        public var HOUR_INC:Number = .0833;        // 1/12
        public var current_sec:Number, current_min:Number, current_hr:Number;
        public var radian_percentage:Number;
        
        // ************************************************************************
        // set up
        // ************************************************************************
        public function setup():void {
            size(WIDTH, HEIGHT);
            background(255);
            //hint(SMOOTH_IMAGES);
            
            var ocr:IFont = loadFont(PATH + "lab/frocessing/" + "ocr-b.vlw");
            textFont(ocr, 12);
            ellipseMode(CENTER);
            rectMode(CENTER);
        }
        
        // ************************************************************************
        // listeners
        // ************************************************************************
        public function mousePressed():void {
            mouseStatus = true;
        }
        public function mouseReleased():void {
            mouseStatus = false;
        }
        
        public function draw():void {
            //translate(width/2, height/2);
            translate(WIDTH*.5, HEIGHT*.5);
            
            radian_percentage = ((mouseY+.0001)*.0025);
            rotateX(TWO_PI * radian_percentage * -1);
            
            // --------------------------------------------
            // analog marks numbers
            // --------------------------------------------
            pushMatrix();
            rotateX(TWO_PI*(.25));
            for (i=1;i<=12;i++) {
                pushMatrix();
                if (i==12) {
                    noStroke();
                    fill(255,102,0);
                } else {
                    noStroke();
                    //fill(0,0,0,75);
                    fill(0,0,0,0.75);
                }
                rotateZ(TWO_PI*((i)*HOUR_INC));
                if (i<10)     {                                /* ads a zero                */
                    text("0"+i, -5, -145);
                } else {
                    text(""+i, -5, -145);
                }
                //rect(0,145,4,10);
                popMatrix();
            }
            popMatrix();
            
            // --------------------------------------------
            // digital marks colon symbols
            // --------------------------------------------
            pushMatrix();
            translate(cos(2*TWO_PI*radian_percentage)*7+7,0);
            rotateX(TWO_PI*(    radian_percentage        ));
            text(":", 0, 0);
            popMatrix();
            pushMatrix();
            translate(cos(2*TWO_PI*radian_percentage)*-7+2,0);
            rotateX(TWO_PI*(    radian_percentage        ));
            text(":", 0, 0);
            popMatrix();
            pushMatrix();
            
            // --------------------------------------------
            // second
            // --------------------------------------------
            current_sec = second();
            radius = 120;
            translate(cos(2*TWO_PI*radian_percentage)*10+10,0);
            rotateY(TWO_PI*((    (45)    +    current_sec    )*SECOND_INC)*-1);
            
            // draw shaded circle
            noStroke();
            
            // draw numbers
            for (i=0; i<=59;i++) {
                pushMatrix();
                translate(radius,0);
                rotateZ(TWO_PI*((    (30-i)    +    current_sec    )*SECOND_INC)*-1);
                translate(radius,0);
                
                rotateZ(TWO_PI*((    (30-i)    +    current_sec    )*SECOND_INC));
                rotateY(TWO_PI*((    (45)    +    current_sec    )*SECOND_INC));
                rotateX(TWO_PI*(    radian_percentage        ));
                
                if (i==current_sec) {                        /* highlights current time    */
                    fill(255,102,0);
                } else {
                    //fill(0,0,0,50);
                    fill(0,0,0,0.5);
                }
                if (i<10)     {                                /* ads a zero                */
                    text("0"+i, 0, 0);
                } else {
                    text(""+i, 0, 0);
                }
                popMatrix();
            }
            
            popMatrix();
            
            // --------------------------------------------
            // minute
            // --------------------------------------------
            current_min = minute() + (second()*SECOND_INC);
            radius = 100;
            pushMatrix();
            translate(0,0);
            rotateY(TWO_PI*((    (45)    +    current_min    )*MINUTE_INC)*-1);
            
            // draw shaded circle
            noStroke();
            
            // draw numbers
            for (i=0; i<=59;i++) {
                pushMatrix();
                translate(radius,0);
                rotateZ(TWO_PI*((    (30-i)    +    int(current_min)    )*MINUTE_INC)*-1);
                translate(radius,0);
                
                rotateZ(TWO_PI*((    (30-i)    +    int(current_min)    )*MINUTE_INC));
                rotateY(TWO_PI*((    (45)    +    current_min    )*MINUTE_INC));
                rotateX(TWO_PI*(    radian_percentage        ));
                
                if (i==int(current_min)) {                        /* highlights current time    */
                    fill(255,102,0);
                } else {
                    //fill(0,0,0,50);
                    fill(0,0,0,0.5);
                }
                
                if (i<10) {                                        /* ads a zero                */
                    text("0"+i, 0, 0);
                } else {
                    text(""+i, 0, 0);
                }
                popMatrix();
            }
            popMatrix();
            
            // --------------------------------------------
            // hour
            // --------------------------------------------
            current_hr = hour()%12 + (minute()*MINUTE_INC);
            radius = 40;
            pushMatrix();
            translate(cos(2*TWO_PI*radian_percentage)*-10-10,0);
            rotateY(TWO_PI*((    (9)    +    current_hr    )*HOUR_INC)*-1);
            
            // draw shaded circle
            noStroke();
            
            // draw numbers
            for (i=0; i<=11;i++) {
                pushMatrix();
                translate(radius,0);
                rotateZ(TWO_PI*((    (6-i)    +    int(current_hr)    )*HOUR_INC)*-1);
                translate(radius,0);
                
                rotateZ(TWO_PI*((    (6-i)    +    int(current_hr)    )*HOUR_INC));
                rotateY(TWO_PI*((    (9)    +    current_hr        )*HOUR_INC));
                rotateX(TWO_PI*(    radian_percentage        ));
                
                if (i==int(current_hr)) {                        /* highlights current time    */
                    fill(255,102,0);
                } else {
                    //fill(0,0,0,50);
                    fill(0,0,0,0.5);
                }
                
                if (i==0) {                                        /* ads a zero                */
                    text("12", 0, 0);
                } else if (i<10) {
                    text("0"+i, 0, 0);
                } else {
                    text(""+i, 0, 0);
                }
                popMatrix();
            }
            popMatrix();
            // ************************************************************************
            // mouse press initializer
            // ************************************************************************
            if (mouseStatus == true && priorMouseStatus == false) {
                priorMouseStatus = true;
                
                // ************************************************************************
                // mouse press looper
                // ************************************************************************
            } else if (mouseStatus == true && priorMouseStatus == true) {
                priorMouseStatus = true;
                
                // ************************************************************************
                // mouse release initializer
                // ************************************************************************
            } else if (mouseStatus == false && priorMouseStatus == true) {
                priorMouseStatus = false;
                
                // ************************************************************************
                // mouse release looper
                // ************************************************************************
            } else if (mouseStatus == false && priorMouseStatus == false) {
                priorMouseStatus = false;
            }
        }
        
    }
}