BitmapMirror.as

3 views
Skip to first unread message

Sho Hashimoto

unread,
Sep 26, 2007, 2:16:06 PM9/26/07
to oklab...@googlegroups.com
進化しました。

http://hashimoto.shokai.org/test/as3/kagami/

最初カメラ版作って、画像と動画もできたらいいなと思ってやったんだけど
FlashPlayer9からクロスドメイン警告が出るようになっていろいろ難しい。結局
プロキシ介すか、fl.Loader系でloadする時に
uiLoader.load(new URLRequest(textUrl.text), new LoaderContext(true,
null, null));
ってやってLoaderContextってのでcrossdomain.xmlを参照しにいくしかないっぽい。
でもそれだとYouTubeのflvとか読み込めないんだよね・・・

で、裏技的にnullのNetStreamをattachして
http://saqoosha.net/2007/07/22/609/

--
橋本 翔(Sho Hashimoto) <sho...@sfc.keio.ac.jp>
Web <http://shokai.org/>
MSN <un...@msn.com>
携帯 <090-9344-2119>

Sho Hashimoto

unread,
Sep 26, 2007, 2:30:18 PM9/26/07
to oklab...@googlegroups.com
と思ったらできた!ソースも添付しておきます。
http://hashimoto.shokai.org/test/as3/kagami/

土善開発合宿で作ってたBitmapMirror.asをちょっといじって、反転させてる。
flvファイルを外部から読み込むとクロスドメイン警告が出るんだけど、それも
なんとかする方法を見つけた。

■クロスドメイン警告をぶっちぎる
[Saq.] YouTube の FLV を抜き出すのが簡単になっている件
http://saqoosha.net/2007/07/22/609/

の下の方をようやく理解した。BitmapData.draw()メソッドでビットマップデー
タオブジェクトを外部のドメインのデータから作ろうとするとした時に警告が出
る、ということは
draw()する瞬間だけ外部ドメインじゃなければいいわけだ。

こうする。
video.attachNetStream(null);
bmd.draw(video); // ビットマップデータを取得
video.attachNetStream(stream);
ビットマップ取る時だけnullをattachしても、videoの表示は消えない(一瞬止
まる)だけなので目には見えない。

■BitmapMirror.as
開発合宿の時と基本的に変わってない。使い方はコンストラクタでBitmapDataを
渡してあげて、process()する。getBitmapData()で処理後のBitmapDataを取得で
きるので結果表示用のBitmapに渡してやれば表示できる。
今回新たにthresholdプロパティを設けました。(後述)
> myBitmapData:BitmapDataがカメラなり何なりから作ってあるとして、
>
> var mirror:BitmapMirro = new BitmapMirror(myBitmapData);
>
> 鏡処理(左右反転)したbitmapdataを受け取る
> mirror.getBitmapData();
>
> 反転処理を反映させる
> mirror.process();
>
> 普通に
> var bmp:Bitmap = new Bitmap(mirror.getBitmapData());
>
> で、
> 毎フレーム毎に
> mirror.process(); すれば更新されます。

thresholdプロパティは、「左端から何ピクセル目に鏡をあてているか」です。
mirror.threshold = 30だと30ピクセル目になる。
今回はスライダーに合わせてるので、ソースが横幅320pixelだから
slider.maximum = 320;
mirror.threshold = slider.value;
mirror.process();
ってやってます。

Sho Hashimoto さんは書きました:

Kagami.fla
BitmapMirror.as
Kagami.swf

Yusuke Wada

unread,
Sep 26, 2007, 10:04:36 PM9/26/07
to oklab...@googlegroups.com
わだ

これサービスとして公開するの?
はぁはぁ


Sho Hashimoto さんは書きました:


--
Yusuke Wada / 和田裕介 <yus...@kamawada.com>
web <http://kamawada.com/~yusuke>

Sho Hashimoto

unread,
Sep 27, 2007, 1:11:21 AM9/27/07
to oklab...@googlegroups.com
めんどいのでしません

--
橋本 翔(Sho Hashimoto)
sho...@sfc.keio.ac.jp

http://shokai.org/

Yusuke Wada

unread,
Sep 27, 2007, 2:34:46 AM9/27/07
to oklab...@googlegroups.com
じゃあパクる

わだ

Sho Hashimoto さんは書きました:


>
> めんどいのでしません
>
> -- 橋本 翔(Sho Hashimoto)
> sho...@sfc.keio.ac.jp
> http://shokai.org/
>
>
> On 2007/09/27, at 11:04, Yusuke Wada wrote:
>
>>
>> わだ
>>
>> これサービスとして公開するの?
>> はぁはぁ
>>
>>
>> Sho Hashimoto さんは書きました:
>>> と思ったらできた!ソースも添付しておきます。
>>> http://hashimoto.shokai.org/test/as3/kagami/
>>>
>>> 土善開発合宿で作ってたBitmapMirror.asをちょっといじって、反転させてる。

>>> flvファイルを外部から読み込むとクロスドメイン警告が出るんだけど、それも


>>> なんとかする方法を見つけた。
>>>
>>> ■クロスドメイン警告をぶっちぎる
>>> [Saq.] YouTube の FLV を抜き出すのが簡単になっている件
>>> http://saqoosha.net/2007/07/22/609/
>>>
>>> の下の方をようやく理解した。BitmapData.draw()メソッドでビットマップデー
>>> タオブジェクトを外部のドメインのデータから作ろうとするとした時に警告が出
>>> る、ということは
>>> draw()する瞬間だけ外部ドメインじゃなければいいわけだ。
>>>
>>> こうする。
>>> video.attachNetStream(null);
>>> bmd.draw(video); // ビットマップデータを取得
>>> video.attachNetStream(stream);
>>> ビットマップ取る時だけnullをattachしても、videoの表示は消えない(一瞬止
>>> まる)だけなので目には見えない。
>>>
>>> ■BitmapMirror.as

>>> 開発合宿の時と基本的に変わってない。使い方はコンストラクタでBitmapDataを
>>> 渡してあげて、process()する。getBitmapData()で処理後のBitmapDataを取得で
>>> きるので結果表示用のBitmapに渡してやれば表示できる。
>>> 今回新たにthresholdプロパティを設けました。(後述)
>>>> myBitmapData:BitmapDataがカメラなり何なりから作ってあるとして、
>>>>

>>>> var mirror:BitmapMirro = new BitmapMirror(myBitmapData);
>>>>
>>>> 鏡処理(左右反転)したbitmapdataを受け取る
>>>> mirror.getBitmapData();
>>>>
>>>> 反転処理を反映させる
>>>> mirror.process();
>>>>
>>>> 普通に
>>>> var bmp:Bitmap = new Bitmap(mirror.getBitmapData());
>>>>
>>>> で、
>>>> 毎フレーム毎に
>>>> mirror.process(); すれば更新されます。
>>>

>>> thresholdプロパティは、「左端から何ピクセル目に鏡をあてているか」です。

Sho Hashimoto

unread,
Sep 27, 2007, 8:14:59 AM9/27/07
to oklab...@googlegroups.com
どうぞ。

ちなみに鏡をななめに当てられるようにアルゴリズムを改良中。

あと、AS3から音関係のライブラリが増えてるみたいなので、そ
れも使ってみたい。
具体的には扇風機にアーッってやると声が変になるアレをFlash
で実装したい

--
橋本 翔(Sho Hashimoto)
sho...@sfc.keio.ac.jp
http://shokai.org/


On 2007/09/27, at 15:34, Yusuke Wada wrote:

>
> じゃあパクる
>
> わだ
>
> Sho Hashimoto さんは書きました:
>>
>> めんどいのでしません
>>
>> -- 橋本 翔(Sho Hashimoto)
>> sho...@sfc.keio.ac.jp
>> http://shokai.org/
>>
>>
>> On 2007/09/27, at 11:04, Yusuke Wada wrote:
>>
>>>
>>> わだ
>>>
>>> これサービスとして公開するの?
>>> はぁはぁ
>>>
>>>
>>> Sho Hashimoto さんは書きました:
>>>> と思ったらできた!ソースも添付しておきます。
>>>> http://hashimoto.shokai.org/test/as3/kagami/
>>>>

>>>> 土善開発合宿で作ってたBitmapMirror.asをちょっといじっ
>>>> て、反転させてる。
>>>> flvファイルを外部から読み込むとクロスドメイン警告が出るんだ

>>>> けど、それも
>>>> なんとかする方法を見つけた。
>>>>
>>>> ■クロスドメイン警告をぶっちぎる
>>>> [Saq.] YouTube の FLV を抜き出すのが簡単になっている件
>>>> http://saqoosha.net/2007/07/22/609/
>>>>
>>>> の下の方をようやく理解した。BitmapData.draw()メソッド
>>>> でビットマップデー
>>>> タオブジェクトを外部のドメインのデータから作ろうとするとし
>>>> た時に警告が出
>>>> る、ということは
>>>> draw()する瞬間だけ外部ドメインじゃなければいいわけだ。
>>>>
>>>> こうする。
>>>> video.attachNetStream(null);
>>>> bmd.draw(video); // ビットマップデータを取得
>>>> video.attachNetStream(stream);
>>>> ビットマップ取る時だけnullをattachしても、
>>>> videoの表示は消えない(一瞬止
>>>> まる)だけなので目には見えない。
>>>>
>>>> ■BitmapMirror.as
>>>> 開発合宿の時と基本的に変わってない。使い方はコンストラクタで

>>>> BitmapDataを
>>>> 渡してあげて、process()する。getBitmapData()で
>>>> 処理後のBitmapDataを取得で
>>>> きるので結果表示用のBitmapに渡してやれば表示できる。
>>>> 今回新たにthresholdプロパティを設けました。(後述)
>>>>> myBitmapData:BitmapDataがカメラなり何なりから作ってあると
>>>>> して、
>>>>>

Yusuke Wada

unread,
Sep 27, 2007, 8:49:33 AM9/27/07
to oklab...@googlegroups.com
あら、割と緩いっすね。さすが商会クオリティ

moo-pongみたいなのつくれるよね

わだ

Sho Hashimoto さんは書きました:
>
> どうぞ。
>
> ちなみに鏡をななめに当てられるようにアルゴリズムを改良中。
>
> あと、AS3から音関係のライブラリが増えてるみたいなので、それも使ってみたい。
> 具体的には扇風機にアーッってやると声が変になるアレをFlashで実装したい

Sho Hashimoto

unread,
Sep 27, 2007, 11:56:58 AM9/27/07
to oklab...@googlegroups.com
なんか変なのできた。

BitmapMirror2つ使う。

// 入力用
var bmd:BitmapData = new BitmapData(source.width, source.height);

// ミラー2つ作る
var mirror:BitmapMirror = new BitmapMirror(bmd);
var mirror2:BitmapMirror = new BitmapMirror(mirror.getBitmapData());
var bmp_result:Bitmap = new Bitmap(mirror2.getBitmapData());

// 結果表示用
bmp_result.x = 0;
bmp_result.y = 100;
this.addChild(bmp_result);

this.addEventListener(Event.ENTER_FRAME, reloadMirror); // 毎フレーム実行
function reloadMirror(e:Event){
bmd.draw(source); // ビットマップデータを取得
if(mirror.threshold > mirror.getBitmapData().width/2) mirror.threshold = 0;
else mirror.threshold++;
if(mirror2.threshold < 20) mirror2.threshold =
mirror2.getBitmapData().width/2;
else mirror2.threshold = mirror2.threshold-2;

mirror.process(); // 鏡写しのビットマップデータ作成
mirror2.process();
}


Yusuke Wada さんは書きました:


> あら、割と緩いっすね。さすが商会クオリティ
>
> moo-pongみたいなのつくれるよね
>
> わだ
>
> Sho Hashimoto さんは書きました:
>> どうぞ。
>>
>> ちなみに鏡をななめに当てられるようにアルゴリズムを改良中。
>>
>> あと、AS3から音関係のライブラリが増えてるみたいなので、それも使ってみたい。
>> 具体的には扇風機にアーッってやると声が変になるアレをFlashで実装したい
>>
>
>


--

Kagami.fla
Kagami.swf
BitmapMirror.as
Reply all
Reply to author
Forward
0 new messages