※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
ginny
EffectAnimationginnyEffectジニーエフェクト
EffectVery cool!!
吸吸
i will use this in my project
ジニー
BetweenAS3effectCool effect with BetweenAS3
Ginny!!
OSX のジニーエフェクトとはちょっと違うなー
Aspire image
不錯的效果真不錯的效果
genie effect, bitmapdata distort
giiny effect
thanks! very nice. this may come handy sometime.
ハンパネエ
かっこよす
Bitmap
いつも思うが画像のセンスがよすぎる
ginnyEffectこれがジニー@@!
nice
おぉ,気持ちいい.
cool
いいね
仕事早い!! でもどちらかというとGInnyよりSuckエフェクトっぽい。
かっこいい
MAC
drawTriangleseffectMacで有名らしいジニーエフェクト。アラビアンナイト。
これは(;´Д`)スバラスィ ...ハァハァ
!!!
Ginny Effect Modoki forked from: Ginny Effect Modoki
- // forked from clockmaker's Ginny Effect Modoki
- /**
- * Ginny Effect Modoki
- *
- * 作ってしまいました。。。
- *
- * Inspired by
- * http://fladdict.net/blog/2009/09/flash-ginny-effect.html
- * http://fladdict.net/exp/ginnyeffect/
- * http://twitter.com/fladdict/status/3842965317
- *
- * Photo by
- * http://www.flickr.com/photos/88403964@N00/2662752839/ (by Yasu)
- *
- * 9/9(Wed) 04:00 first post http://twitter.com/clockmaker/status/3845570478
- * ※ Mac OS X の隠しエフェクトの「Suck」っぽい http://bit.ly/11vMDh
- */
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.net.*;
- import flash.system.*;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import com.bit101.components.*;
- [SWF(frameRate = 60)]
- public class Main extends Sprite {
- private const IMAGE_URL:String = "http://farm4.static.flickr.com/3190/2662752839_249c6642b1.jpg";
- private const IMG_W:int = 500;
- private const IMG_H:int = 375;
- private const SEGMENT:int = 20;
- private var loader:Loader;
- private var vertexs:Array;
- private var sprite:Sprite;
- private var isHide:Boolean = false;
- private var isShift:Boolean = false;
- public function Main():void {
- // init
- stage.quality = StageQuality.MEDIUM;
- graphics.beginFill(0x0);
- graphics.drawRect(0, 0, 465, 465);
- new Label(this, 360, 440, "PLEASE CLICK STAGE")
- // load
- var context:LoaderContext = new LoaderContext(true);
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
- loader.load(new URLRequest(IMAGE_URL), context);
- }
- private function compHandler(e:Event):void {
- sprite = new Sprite();
- addChild(sprite);
- vertexs = []
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- vertexs[xx] = [];
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- }
- }
- draw();
- addEventListener(Event.ENTER_FRAME, draw);
- stage.addEventListener(MouseEvent.CLICK, clickHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- }
- private function clickHandler(e:MouseEvent):void {
- var tweens:Array = [];
- var xx:int, yy:int, delay:Number;
- var px:Number = SEGMENT * (mouseX / IMG_W);
- var py:Number = SEGMENT * (mouseY / IMG_H);
- if (!isHide) {
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py)) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : px * IMG_W / SEGMENT,
- y : py * IMG_H / SEGMENT
- },null, delay, Cubic.easeIn),
- delay / 2
- )
- )
- }
- }
- }else {
- // 重み付けが怪しい・・・
- var max:Number = 0;
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(px * IMG_W / SEGMENT, py * IMG_H / SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))
- max = Math.max(max, delay);
- }
- }
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- delay = (max - Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : xx * IMG_W / SEGMENT,
- y : yy * IMG_H / SEGMENT
- },null, delay + 0.05, Quad.easeOut),
- delay / 2
- )
- )
- }
- }
- }
- var itw:ITween = BetweenAS3.parallelTweens(tweens);
- if (isShift) itw = BetweenAS3.scale(itw, 5);
- itw.play();
- isHide = !isHide;
- }
- /**
- * drawTriangles でテクスチャを貼り付けるメソッド
- * 参考: http://wonderfl.net/code/e7e1e28a9f20d73f11f0bb02d3e4b5f512c7cc0f
- */
- private function draw(e:Event = null):void {
- var vertices:Vector.<Number> = new Vector.<Number>();
- var indices:Vector.<int> = new Vector.<int>();
- var uvtData:Vector.<Number> = new Vector.<Number>();
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertices[vertices.length] = vertexs[xx][yy].x
- vertices[vertices.length] = vertexs[xx][yy].y
- uvtData[uvtData.length] = xx / SEGMENT;
- uvtData[uvtData.length] = yy / SEGMENT;
- }
- }
- for (var i:int = 0; i < SEGMENT - 1; i++) {
- for (var j:int = 0; j < SEGMENT - 1; j++) {
- indices.push(i * SEGMENT + j, i * SEGMENT + j + 1, (i + 1) * SEGMENT + j);
- indices.push(i * SEGMENT + j + 1, (i + 1) * SEGMENT + 1 + j, (i + 1) * SEGMENT + j);
- }
- }
- var g:Graphics = sprite.graphics;
- g.clear();
- g.beginBitmapFill(Bitmap(loader.content).bitmapData);
- g.drawTriangles(vertices, indices, uvtData);
- g.endFill();
- }
- /**
- * Shiftキーを押してるとスローモーションになる
- * macの挙動と同じように
- */
- private function keyUpHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = false;
- }
- private function keyDownHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = true;
- }
- }
- }
Ginny Effect Modoki forked from: Ginny Effect Modoki
- // forked from clockmaker's Ginny Effect Modoki
- /**
- * Ginny Effect Modoki
- *
- * 作ってしまいました。。。
- *
- * Inspired by
- * http://fladdict.net/blog/2009/09/flash-ginny-effect.html
- * http://fladdict.net/exp/ginnyeffect/
- * http://twitter.com/fladdict/status/3842965317
- *
- * Photo by
- * http://www.flickr.com/photos/88403964@N00/2662752839/ (by Yasu)
- *
- * 9/9(Wed) 04:00 first post http://twitter.com/clockmaker/status/3845570478
- * ※ Mac OS X の隠しエフェクトの「Suck」っぽい http://bit.ly/11vMDh
- */
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.net.*;
- import flash.system.*;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import com.bit101.components.*;
- [SWF(frameRate = 60)]
- public class Main extends Sprite {
- private const IMAGE_URL:String = "http://farm4.static.flickr.com/3190/2662752839_249c6642b1.jpg";
- private const IMG_W:int = 500;
- private const IMG_H:int = 375;
- private const SEGMENT:int = 20;
- private var loader:Loader;
- private var vertexs:Array;
- private var sprite:Sprite;
- private var isHide:Boolean = false;
- private var isShift:Boolean = false;
- public function Main():void {
- // init
- stage.quality = StageQuality.MEDIUM;
- graphics.beginFill(0x0);
- graphics.drawRect(0, 0, 465, 465);
- new Label(this, 360, 440, "PLEASE CLICK STAGE")
- // load
- var context:LoaderContext = new LoaderContext(true);
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
- loader.load(new URLRequest(IMAGE_URL), context);
- }
- private function compHandler(e:Event):void {
- sprite = new Sprite();
- addChild(sprite);
- vertexs = []
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- vertexs[xx] = [];
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- }
- }
- draw();
- addEventListener(Event.ENTER_FRAME, draw);
- stage.addEventListener(MouseEvent.CLICK, clickHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- }
- private function clickHandler(e:MouseEvent):void {
- var tweens:Array = [];
- var xx:int, yy:int, delay:Number;
- var px:Number = SEGMENT * (mouseX / IMG_W);
- var py:Number = SEGMENT * (mouseY / IMG_H);
- if (!isHide) {
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py)) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : px * IMG_W / SEGMENT,
- y : py * IMG_H / SEGMENT
- },null, delay, Cubic.easeIn),
- delay / 2
- )
- )
- }
- }
- }else {
- // 重み付けが怪しい・・・
- var max:Number = 0;
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(px * IMG_W / SEGMENT, py * IMG_H / SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))
- max = Math.max(max, delay);
- }
- }
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- delay = (max - Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : xx * IMG_W / SEGMENT,
- y : yy * IMG_H / SEGMENT
- },null, delay + 0.05, Quad.easeOut),
- delay / 2
- )
- )
- }
- }
- }
- var itw:ITween = BetweenAS3.parallelTweens(tweens);
- if (isShift) itw = BetweenAS3.scale(itw, 5);
- itw.play();
- isHide = !isHide;
- }
- /**
- * drawTriangles でテクスチャを貼り付けるメソッド
- * 参考: http://wonderfl.net/code/e7e1e28a9f20d73f11f0bb02d3e4b5f512c7cc0f
- */
- private function draw(e:Event = null):void {
- var vertices:Vector.<Number> = new Vector.<Number>();
- var indices:Vector.<int> = new Vector.<int>();
- var uvtData:Vector.<Number> = new Vector.<Number>();
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertices[vertices.length] = vertexs[xx][yy].x
- vertices[vertices.length] = vertexs[xx][yy].y
- uvtData[uvtData.length] = xx / SEGMENT;
- uvtData[uvtData.length] = yy / SEGMENT;
- }
- }
- for (var i:int = 0; i < SEGMENT - 1; i++) {
- for (var j:int = 0; j < SEGMENT - 1; j++) {
- indices.push(i * SEGMENT + j, i * SEGMENT + j + 1, (i + 1) * SEGMENT + j);
- indices.push(i * SEGMENT + j + 1, (i + 1) * SEGMENT + 1 + j, (i + 1) * SEGMENT + j);
- }
- }
- var g:Graphics = sprite.graphics;
- g.clear();
- g.beginBitmapFill(Bitmap(loader.content).bitmapData);
- g.drawTriangles(vertices, indices, uvtData);
- g.endFill();
- }
- /**
- * Shiftキーを押してるとスローモーションになる
- * macの挙動と同じように
- */
- private function keyUpHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = false;
- }
- private function keyDownHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = true;
- }
- }
- }
Ginny Effect Modoki forked from: Ginny Effect Modoki
- // forked from clockmaker's Ginny Effect Modoki
- /**
- * Ginny Effect Modoki
- *
- * 作ってしまいました。。。
- *
- * Inspired by
- * http://fladdict.net/blog/2009/09/flash-ginny-effect.html
- * http://fladdict.net/exp/ginnyeffect/
- * http://twitter.com/fladdict/status/3842965317
- *
- * Photo by
- * http://www.flickr.com/photos/88403964@N00/2662752839/ (by Yasu)
- *
- * 9/9(Wed) 04:00 first post http://twitter.com/clockmaker/status/3845570478
- * ※ Mac OS X の隠しエフェクトの「Suck」っぽい http://bit.ly/11vMDh
- */
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.net.*;
- import flash.system.*;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import com.bit101.components.*;
- [SWF(frameRate = 60)]
- public class Main extends Sprite {
- private const IMAGE_URL:String = "http://farm4.static.flickr.com/3190/2662752839_249c6642b1.jpg";
- private const IMG_W:int = 500;
- private const IMG_H:int = 375;
- private const SEGMENT:int = 20;
- private var loader:Loader;
- private var vertexs:Array;
- private var sprite:Sprite;
- private var isHide:Boolean = false;
- private var isShift:Boolean = false;
- public function Main():void {
- // init
- stage.quality = StageQuality.MEDIUM;
- graphics.beginFill(0x0);
- graphics.drawRect(0, 0, 465, 465);
- new Label(this, 360, 440, "PLEASE CLICK STAGE")
- // load
- var context:LoaderContext = new LoaderContext(true);
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
- loader.load(new URLRequest(IMAGE_URL), context);
- }
- private function compHandler(e:Event):void {
- sprite = new Sprite();
- addChild(sprite);
- vertexs = []
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- vertexs[xx] = [];
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- }
- }
- draw();
- addEventListener(Event.ENTER_FRAME, draw);
- stage.addEventListener(MouseEvent.CLICK, clickHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- }
- private function clickHandler(e:MouseEvent):void {
- var tweens:Array = [];
- var xx:int, yy:int, delay:Number;
- var px:Number = SEGMENT * (mouseX / IMG_W);
- var py:Number = SEGMENT * (mouseY / IMG_H);
- if (!isHide) {
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py)) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : px * IMG_W / SEGMENT,
- y : py * IMG_H / SEGMENT
- },null, delay, Cubic.easeIn),
- delay / 2
- )
- )
- }
- }
- }else {
- // 重み付けが怪しい・・・
- var max:Number = 0;
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(px * IMG_W / SEGMENT, py * IMG_H / SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))
- max = Math.max(max, delay);
- }
- }
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- delay = (max - Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : xx * IMG_W / SEGMENT,
- y : yy * IMG_H / SEGMENT
- },null, delay + 0.05, Quad.easeOut),
- delay / 2
- )
- )
- }
- }
- }
- var itw:ITween = BetweenAS3.parallelTweens(tweens);
- if (isShift) itw = BetweenAS3.scale(itw, 5);
- itw.play();
- isHide = !isHide;
- }
- /**
- * drawTriangles でテクスチャを貼り付けるメソッド
- * 参考: http://wonderfl.net/code/e7e1e28a9f20d73f11f0bb02d3e4b5f512c7cc0f
- */
- private function draw(e:Event = null):void {
- var vertices:Vector.<Number> = new Vector.<Number>();
- var indices:Vector.<int> = new Vector.<int>();
- var uvtData:Vector.<Number> = new Vector.<Number>();
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertices[vertices.length] = vertexs[xx][yy].x
- vertices[vertices.length] = vertexs[xx][yy].y
- uvtData[uvtData.length] = xx / SEGMENT;
- uvtData[uvtData.length] = yy / SEGMENT;
- }
- }
- for (var i:int = 0; i < SEGMENT - 1; i++) {
- for (var j:int = 0; j < SEGMENT - 1; j++) {
- indices.push(i * SEGMENT + j, i * SEGMENT + j + 1, (i + 1) * SEGMENT + j);
- indices.push(i * SEGMENT + j + 1, (i + 1) * SEGMENT + 1 + j, (i + 1) * SEGMENT + j);
- }
- }
- var g:Graphics = sprite.graphics;
- g.clear();
- g.beginBitmapFill(Bitmap(loader.content).bitmapData);
- g.drawTriangles(vertices, indices, uvtData);
- g.endFill();
- }
- /**
- * Shiftキーを押してるとスローモーションになる
- * macの挙動と同じように
- */
- private function keyUpHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = false;
- }
- private function keyDownHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = true;
- }
- }
- }
Ginny Effect Modoki forked from: Ginny Effect Modoki
- // forked from clockmaker's Ginny Effect Modoki
- /**
- * Ginny Effect Modoki
- *
- * 作ってしまいました。。。
- *
- * Inspired by
- * http://fladdict.net/blog/2009/09/flash-ginny-effect.html
- * http://fladdict.net/exp/ginnyeffect/
- * http://twitter.com/fladdict/status/3842965317
- *
- * Photo by
- * http://www.flickr.com/photos/88403964@N00/2662752839/ (by Yasu)
- *
- * 9/9(Wed) 04:00 first post http://twitter.com/clockmaker/status/3845570478
- * ※ Mac OS X の隠しエフェクトの「Suck」っぽい http://bit.ly/11vMDh
- */
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.net.*;
- import flash.system.*;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import com.bit101.components.*;
- [SWF(frameRate = 60)]
- public class Main extends Sprite {
- private const IMAGE_URL:String = "http://farm5.static.flickr.com/4010/4373971217_49597704c9.jpg";
- private const IMG_W:int = 500;
- private const IMG_H:int = 400;
- private const SEGMENT:int = 20;
- private var loader:Loader;
- private var vertexs:Array;
- private var sprite:Sprite;
- private var isHide:Boolean = false; //画像が表示されているかどうか
- private var isShift:Boolean = false;
- public function Main():void {
- // init
- stage.quality = StageQuality.MEDIUM; //Flash
- graphics.beginFill(0xf);
- graphics.drawRect(0, 0, 465, 465);
- new Label(this, 360, 440, "welcome may homepage")
- // load
- var context:LoaderContext = new LoaderContext(true);
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
- loader.load(new URLRequest(IMAGE_URL), context);
- }
- private function compHandler(e:Event):void {
- sprite = new Sprite();
- addChild(sprite);
- vertexs = []
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- vertexs[xx] = [];
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- }
- }
- draw();
- addEventListener(Event.ENTER_FRAME, draw);
- stage.addEventListener(MouseEvent.CLICK, clickHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- }
- private function clickHandler(e:MouseEvent):void {
- var tweens:Array = [];
- var xx:int, yy:int, delay:Number;
- var px:Number = SEGMENT * (mouseX / IMG_W);
- var py:Number = SEGMENT * (mouseY / IMG_H);
- if (!isHide) {
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py)) / 10;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : px * IMG_W / SEGMENT,
- y : py * IMG_H / SEGMENT
- },null, delay, Cubic.easeIn),
- delay / 2
- )
- )
- }
- }
- }else {
- // 重み付けが怪しい・・・
- var max:Number = 0;
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(px * IMG_W / SEGMENT, py * IMG_H / SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))
- max = Math.max(max, delay);
- }
- }
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- delay = (max - Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : xx * IMG_W / SEGMENT,
- y : yy * IMG_H / SEGMENT
- },null, delay + 0.05, Quad.easeOut),
- delay / 2
- )
- )
- }
- }
- }
- // 指定された配列内のトゥイーンを結合して、同時に実行するトゥイーンを作成します.
- var itw:ITween = BetweenAS3.parallelTweens(tweens);
- if (isShift) itw = BetweenAS3.scale(itw, 5);
- itw.play();
- isHide = !isHide;
- }
- /**
- * drawTriangles でテクスチャを貼り付けるメソッド
- * 参考: http://wonderfl.net/code/e7e1e28a9f20d73f11f0bb02d3e4b5f512c7cc0f
- */
- private function draw(e:Event = null):void {
- //Vector クラス
- var vertices:Vector.<Number> = new Vector.<Number>();
- var indices:Vector.<int> = new Vector.<int>();
- var uvtData:Vector.<Number> = new Vector.<Number>();
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertices[vertices.length] = vertexs[xx][yy].x
- vertices[vertices.length] = vertexs[xx][yy].y
- uvtData[uvtData.length] = xx / SEGMENT;
- uvtData[uvtData.length] = yy / SEGMENT;
- }
- }
- for (var i:int = 0; i < SEGMENT - 1; i++) {
- for (var j:int = 0; j < SEGMENT - 1; j++) {
- indices.push(i * SEGMENT + j, i * SEGMENT + j + 1, (i + 1) * SEGMENT + j);
- indices.push(i * SEGMENT + j + 1, (i + 1) * SEGMENT + 1 + j, (i + 1) * SEGMENT + j);
- }
- }
- var g:Graphics = sprite.graphics;
- g.clear();
- g.beginBitmapFill(Bitmap(loader.content).bitmapData);
- g.drawTriangles(vertices, indices, uvtData);
- g.endFill();
- }
- /**
- * Shiftキーを押してるとスローモーションになる
- * macの挙動と同じように
- */
- private function keyUpHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = false;
- }
- private function keyDownHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = true;
- }
- }
- }
Ginny Effect Modoki forked from: Ginny Effect Modoki
- // forked from clockmaker's Ginny Effect Modoki
- /**
- * Ginny Effect Modoki
- *
- * 作ってしまいました。。。
- *
- * Inspired by
- * http://fladdict.net/blog/2009/09/flash-ginny-effect.html
- * http://fladdict.net/exp/ginnyeffect/
- * http://twitter.com/fladdict/status/3842965317
- *
- * Photo by
- * http://www.flickr.com/photos/88403964@N00/2662752839/ (by Yasu)
- *
- * 9/9(Wed) 04:00 first post http://twitter.com/clockmaker/status/3845570478
- * ※ Mac OS X の隠しエフェクトの「Suck」っぽい http://bit.ly/11vMDh
- */
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.net.*;
- import flash.system.*;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import com.bit101.components.*;
- [SWF(frameRate = 60)]
- public class Main extends Sprite {
- private const IMAGE_URL:String = "http://farm4.static.flickr.com/3190/2662752839_249c6642b1.jpg";
- private const IMG_W:int = 500;
- private const IMG_H:int = 375;
- private const SEGMENT:int = 20;
- private var loader:Loader;
- private var vertexs:Array;
- private var sprite:Sprite;
- private var isHide:Boolean = false;
- private var isShift:Boolean = false;
- public function Main():void {
- // init
- stage.quality = StageQuality.MEDIUM;
- graphics.beginFill(0x0);
- graphics.drawRect(0, 0, 465, 465);
- new Label(this, 360, 440, "PLEASE C STAGE")
- // load
- var context:LoaderContext = new LoaderContext(true);
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
- loader.load(new URLRequest(IMAGE_URL), context);
- }
- private function compHandler(e:Event):void {
- sprite = new Sprite();
- addChild(sprite);
- vertexs = []
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- vertexs[xx] = [];
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- }
- }
- draw();
- addEventListener(Event.ENTER_FRAME, draw);
- stage.addEventListener(MouseEvent.CLICK, clickHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- }
- private function clickHandler(e:MouseEvent):void {
- var tweens:Array = [];
- var xx:int, yy:int, delay:Number;
- var px:Number = SEGMENT * (mouseX / IMG_W);
- var py:Number = SEGMENT * (mouseY / IMG_H);
- if (!isHide) {
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(xx * IMG_W / SEGMENT, yy * IMG_H/SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py)) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : px * IMG_W / SEGMENT,
- y : py * IMG_H / SEGMENT
- },null, delay, Cubic.easeIn),
- delay / 2
- )
- )
- }
- }
- }else {
- // 重み付けが怪しい・・・
- var max:Number = 0;
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- vertexs[xx][yy] = new Point(px * IMG_W / SEGMENT, py * IMG_H / SEGMENT);
- delay = Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))
- max = Math.max(max, delay);
- }
- }
- for (xx = 0; xx < SEGMENT; xx++) {
- for (yy = 0; yy < SEGMENT; yy++) {
- delay = (max - Math.sqrt((xx - px) * (xx - px) + (yy - py) * (yy - py))) / 40;
- tweens.push(
- BetweenAS3.delay(
- BetweenAS3.tween(vertexs[xx][yy], {
- x : xx * IMG_W / SEGMENT,
- y : yy * IMG_H / SEGMENT
- },null, delay + 0.05, Quad.easeOut),
- delay / 2
- )
- )
- }
- }
- }
- var itw:ITween = BetweenAS3.parallelTweens(tweens);
- if (isShift) itw = BetweenAS3.scale(itw, 5);
- itw.play();
- isHide = !isHide;
- }
- /**
- * drawTriangles でテクスチャを貼り付けるメソッド
- * 参考: http://wonderfl.net/code/e7e1e28a9f20d73f11f0bb02d3e4b5f512c7cc0f
- */
- private function draw(e:Event = null):void {
- var vertices:Vector.<Number> = new Vector.<Number>();
- var indices:Vector.<int> = new Vector.<int>();
- var uvtData:Vector.<Number> = new Vector.<Number>();
- for (var xx:int = 0; xx < SEGMENT; xx++) {
- for (var yy:int = 0; yy < SEGMENT; yy++) {
- vertices[vertices.length] = vertexs[xx][yy].x
- vertices[vertices.length] = vertexs[xx][yy].y
- uvtData[uvtData.length] = xx / SEGMENT;
- uvtData[uvtData.length] = yy / SEGMENT;
- }
- }
- for (var i:int = 0; i < SEGMENT - 1; i++) {
- for (var j:int = 0; j < SEGMENT - 1; j++) {
- indices.push(i * SEGMENT + j, i * SEGMENT + j + 1, (i + 1) * SEGMENT + j);
- indices.push(i * SEGMENT + j + 1, (i + 1) * SEGMENT + 1 + j, (i + 1) * SEGMENT + j);
- }
- }
- var g:Graphics = sprite.graphics;
- g.clear();
- g.beginBitmapFill(Bitmap(loader.content).bitmapData);
- g.drawTriangles(vertices, indices, uvtData);
- g.endFill();
- }
- /**
- * Shiftキーを押してるとスローモーションになる
- * macの挙動と同じように
- */
- private function keyUpHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = false;
- }
- private function keyDownHandler(e:KeyboardEvent):void {
- if(e.keyCode == 16) isShift = true;
- }
- }
- }
notice:






