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

flash on 2009-3-4

Get Adobe Flash player
by ArcCosine 03 Mar 2009
    Embed
package {
  import flash.display.Sprite;
  public class Tutorial12 extends Sprite {
    public function Tutorial12(){
    var dock : Dock = new Dock();
      dock.x = 150;
      dock.y = 180;
      addChild(dock);
    }
  }
}
import flash.display.Sprite;
import flash.events.Event;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.events.MouseEvent;
import mx.effects.Tween;
import mx.effects.easing.Quadratic;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.display.Bitmap;
class Dock extends Sprite {
  private var iconAry : Array = new Array(10);
  private var dockBg : DockBg = new DockBg();
  private var dockTop : int = -30;
  function Dock(){
    addChild(dockBg);
    setIcon();
    addEventListener(Event.ENTER_FRAME, IconMove);
  }
  private function IconMove(event:Event) : void {
    if(0 < mouseX && mouseX < 300 && dockTop < mouseY && mouseY < 0){
      dockTop = -120;
      for (var i :int = 0; i < 10; i++){
        var distance : int = mouseX - i * 30 - 15;
        if(-20 * Math.PI < distance && distance < 20 * Math.PI){
          iconAry[i].scaleY += ((1+3*Math.cos(distance/40))
                          - iconAry[i].scaleY)/1.5;
          iconAry[i].scaleX += ((1+3*Math.cos(distance/40))
                          - iconAry[i].scaleX)/1.5;
          iconAry[i].x += (i*30 + 15 - 120*Math.sin(distance/40)
                          - iconAry[i].x)/1.5;
        } else {
          iconAry[i].scaleY += (1 - iconAry[i].scaleY)/1.5;
          iconAry[i].scaleX += (1 - iconAry[i].scaleX)/1.5;
          if(-20 * Math.PI > distance) {
            iconAry[i].x += (i*30 + 120 + 25 - iconAry[i].x)/1.5;
          } else {
            iconAry[i].x += (i*30 - 120 + 5 - iconAry[i].x)/1.5;
          }
        }
      }
    } else {
      dockTop = -30;
      for (i = 0; i < 10; i++){
        iconAry[i].scaleY += (1 - iconAry[i].scaleY)/1.5;
        iconAry[i].scaleX += (1 - iconAry[i].scaleX)/1.5;
        iconAry[i].x += (i*30+15 - iconAry[i].x)/1.5;
      }
    }
    dockBg.x = iconAry[0].x - iconAry[0].width/2;
    dockBg.width = iconAry[9].x + iconAry[9].width/2 
                  - (iconAry[0].x - iconAry[0].width/2);
  }
  private function setIcon():void {
    for (var i : int = 0; i < 10; i++){
      iconAry[i] = new Icon(i);
      iconAry[i].x = i * 30 + 15;
      addChild(iconAry[i]);
    }
    addEventListener(Event.ENTER_FRAME, IconMove);
  }
}
class DockBg extends Sprite {
  function DockBg() {
    graphics.beginFill(0xFFFFFF,0.5);
    graphics.drawRect(0,0,300,-30);
    graphics.endFill();
  }
}
class Icon extends Sprite {
  private var icon : SimpleButton = new SimpleButton();
  [Embed(source='flash.png')]
    private var Image0 : Class;
  function Icon(i : int) {
    var upImg : Sprite = upIcon();
    var overImg : Sprite = upIcon();
    var label : TextField = makeLabel(i);
    overImg.addChild(label);
    icon.upState = upImg;
    icon.overState = overImg;
    icon.downState = overImg;
    icon.useHandCursor = true;
    icon.hitTestState = upImg;
    addChild(icon);
    icon.addEventListener(MouseEvent.MOUSE_DOWN, jumpStart);
  }
  private function upIcon() : Sprite {
    var Img : Sprite = new Sprite();
    var bmp : Bitmap = new Image0();
    bmp.width = 30;
    bmp.height = 30;
    bmp.x = -15;
    bmp.y = -30;
    bmp.smoothing = true;
    Img.addChild(bmp);
    return Img;
  }
  private function makeLabel(i : int) : TextField {
    var tf : TextField = new TextField();
    tf.text = "アイコン" + i;
    tf.width = 30;
    tf.x = -15;
    tf.y = -36;
    var fmt:TextFormat = new TextFormat();
    fmt.color = 0x000000;
    fmt.size = 4;
    fmt.align = TextFormatAlign.CENTER;
    tf.setTextFormat(fmt);
    return tf;
  }
  private function jumpStart(e:Event):void {
    var jump : Tween = new Tween(icon, icon.y, -5, 300, 24);
    jump.easingFunction = Quadratic.easeOut;
    jump.setTweenHandlers(updateJump, reachTop);
  }
  private function updateJump(val:Number):void {
    icon.y = val;
  }
  private function reachTop(val:Number):void {
    var fall:Tween = new Tween(icon, icon.y, 0, 300, 24);
    fall.easingFunction = Quadratic.easeIn;
    fall.setTweenHandlers(updateFall, jumpFinish);
  }
  private function updateFall(val:Number):void {
    icon.y = val;
  }
  private function jumpFinish(val:Number):void {
    var URL : String = "javascript:alert('Clicked')";
    var request:URLRequest = new URLRequest(URL);
    navigateToURL(request,"_self");
  }
}