2008年12月24日
MacのDockみたいな・改
MacのDockみたいなをちょっと修正。 横方向の動かし方を思いついたので実装。だいぶそれっぽくなった。
FlashPlayer9以上が必要です。
例によってソースコードは続きから。
前回のものにも縦方向の基準位置が必要だったが、 横一列に並んでいたので、全アイコンに共通の値を使えば問題はなかった。 横方向の基準位置はアイコンによって異なるので、 「各アイコンの基準位置」を保存するために新しくクラスを定義。 アイコンの動きも全部このクラスで行う。
package { import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Stage; import flash.events.Event; import flash.events.MouseEvent; import flash.utils.*; public class Main extends Sprite { const ICON_NUM:int = 6; public function Main() { // 台座 var base:MovieClip = new MovieClip(); base.graphics.beginFill(0x555555); base.graphics.drawRect(10, 85, 380, 30); base.graphics.endFill(); stage.addChild(base); // アイコン for(var i:int = 0; i < ICON_NUM; i++) { // アイコンのインスタンス化 // アイコンを表すクラスはfla内で定義 var classRef = getDefinitionByName('Icon' + i); var icon:MovieClip = new classRef(); // あとはコンテナクラスに丸投げ var container:Container = new Container(stage, icon, i * 60 + 50, 75); } } } } import flash.events.Event; import flash.display.MovieClip; import flash.display.Sprite; import flash.display.Stage; class Container extends Sprite { const MEASURE = 100; private var mStage:Stage; private var mIcon:MovieClip; private var mX:Number; private var mY:Number; public function Container(stage:Stage, icon:MovieClip, x:Number, y:Number) :void { mStage = stage; mIcon = icon; mX = x; mY = y; icon.x = mX; icon.y = mY; this.addEventListener(Event.ENTER_FRAME, this.scaleChange); mStage.addChild(mIcon); } private function scaleChange(evt:Event) :void { // カーソルとアイコンの距離に応じて倍率を変える var scale:Number = (2 * MEASURE - Math.abs(mIcon.x - mStage.mouseX)) / MEASURE; if(scale < 1.0) scale = 1.0; mIcon.scaleX = scale; mIcon.scaleY = scale; mIcon.y = mY + (mIcon.height / 4) * (1.0 - scale); // X位置を変化 var dx:Number = (mIcon.x - mStage.mouseX) / MEASURE; mIcon.x = mX + dx * Math.exp(-dx * dx) * MEASURE / 4;; } }
タグ :ActionScriptDock
GoogleReaderを3ペイン表示にするスクリプトのα版
クリック動作を無効にするジョークブックマークレット
文字サイズを拡大縮小するスクリプト
ダブルクリックでスクロールするスクリプト
電卓を表示するブックマークレット
ごくごく一部の顔文字を絵文字に置き換えるスクリプト
クリック動作を無効にするジョークブックマークレット
文字サイズを拡大縮小するスクリプト
ダブルクリックでスクロールするスクリプト
電卓を表示するブックマークレット
ごくごく一部の顔文字を絵文字に置き換えるスクリプト
Posted by Handle at 13:43│Comments(0)│プログラミング
コメントフォーム