
http://8985.tumblr.comが格好良すぎたのでFlashバージョンをAS3の勉強がてら作ってみた。
サンプルはこちらより:8985SWF
以下ソース
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.geom.*;
public class Main extends Sprite{
private var imgLoader:Loader = new Loader ();
private var w:int;
private var h:int;
private var bgBm:Bitmap;
private var defBm:Bitmap;
private var refBm:Bitmap;
private var matrix:Matrix = new Matrix();
private var myMask:Sprite = new Sprite();
private var ofst:int = 0;
public function Main():void{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var paramObj:Object = LoaderInfo(loaderInfo).parameters;
var url:String = paramObj["url"];
ofst = paramObj["ofst"];
var urlReq : URLRequest = new URLRequest(url);
imgLoader.load(urlReq);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,drawImg);
stage.addEventListener("resize",function(){fitImg()});
}
private function drawImg(e:Event) : void {
w = (stage.stageWidth/2 < imgLoader.width-ofst ? stage.stageWidth/2 : imgLoader.width-ofst);
h = imgLoader.height;
var bgBmd:BitmapData = new BitmapData(1,h);
var defBmd:BitmapData = new BitmapData(w,h);
var refBmd:BitmapData = new BitmapData(w,h);
bgBm = new Bitmap(bgBmd);
defBm = new Bitmap(defBmd);
refBm = new Bitmap(refBmd);
addChild(bgBm);
addChild(defBm);
addChild(refBm);
matrix.scale(-1,1);
matrix.translate(w,0);
bgBmd.draw(imgLoader,matrix,null,null,null);
defBmd.draw(imgLoader,null,null,null,null);
refBmd.draw(imgLoader,matrix,null,null,null);
refBm.mask = myMask;
myMask.x = 0;
myMask.y = 0;
myMask.graphics.beginFill(0x000000);
myMask.graphics.drawRect(0,0,w,h);
myMask.graphics.endFill();
addChild(myMask);
fitImg();
};
private function fitImg() : void {
var isHalf = (stage.stageWidth/2 < imgLoader.width-ofst);
w = (isHalf ? stage.stageWidth/2 : imgLoader.width-ofst);
h = imgLoader.height;
myMask.width = w;
myMask.height = h;
myMask.x = (isHalf ? w : stage.stageWidth - w);
bgBm.width = stage.stageWidth;
refBm.x = stage.stageWidth - (imgLoader.width-ofst);
};
}
}>
あーあ、ほんと、ソースキレイにかけるようになりたい。
あとどんだけ時間かかってんだよ!っていうね。
まぁでもBitmapまわりについてはなかなか分かるようになってきたな。
あとはMaskをつかった。一歩ずつやってくしかない。
メソッドも結構覚えた。そして何よりjavascriptと大きく違うのが、実行結果が楽しい!
Flexもちょっとやったんだけど、FlexBuilder欲しくなるだけだからちょっと置いておこう。
またまたユニコーン動画。89年だってよ。ボク当時ボク6歳。そして民生24歳。