昨日、タイリングについてbitmapを使いflvを読み込み後、TilingVideo.asを使い
説明したんですけど、
タイリング中にユーザーが画像サイズを変えたときのこと考えてなかった。
僕は究極の平和ぼけ野郎だった事に気づいた。
ということで昨日のタイリングを少々修正。
というか、ここを訂正。
////////////////////////////////////////////////////////////////////////stageResize
function stageResize(e:Event):void {
trace("stageResize");
/*bitmap消去*/
timer.removeEventListener(TimerEvent.TIMER, addVideo);
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, addEnd);
endTimer.removeEventListener(TimerEvent.TIMER, removeVideo);
endTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeEnd);
/*エンターフレームを消す*/
for (var i:int= 0; i <= totalNumMax; i++) {
var instance:String = "clone" + i;
var target = container.getChildByName(instance);
if (target != null){
target.removeEventListener(Event.ENTER_FRAME, bdEnterFrame);
container.removeChildAt(0);
trace("remove=",i);
}
}
/*stageにbitmap追加*/
firstSetting();
for(var s:int = 0; s < tateNumMax; s++){
for(var k:int = 0; k < yokoNumMax; k++){
/*bpdata*/
var clone:Bitmap = new Bitmap(null);
clone.addEventListener(Event.ENTER_FRAME, bdEnterFrame); //bitmapをエンターフレームする
clone.name = "clone" + totalNum;
container.addChild(clone); //cloneをステージに加える
clone.x = k * video.width;
clone.y = s * video.height;
totalNum ++;
trace("totalNum =",totalNum);
}
}
trace("containerNumChild =",container.numChildren);
/*タイルのremove作業*/
endTimer = new Timer(timerNum, totalNumMax);
endTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeEnd);
endTimer.addEventListener(TimerEvent.TIMER, removeVideo);
endTimer.start();
}
これでタイリングの最中に画面サイズを変更されても再度タイリングしなおすので見苦しい事には
ならないはずです。多分。
FLASH AS3.0はしっかりかけてエラー表示もしっかりでてくれるので
間違えてるところがわかりやすいです。
Categories:
Japanese,
flash — Tags:
AS3.0,
bitmap — @ 8:58 pm
最近ビデオを色々と使う事が増えてきたため(私ごとで・・)videoを使った表現を もっと使いたいと思い色々と勉強中。 videoをタイリングしてコンテンツを表示させたらかっこいいんじゃないかなーと 思いトライしてみたら案外簡単にできた。
TilingVideo.asをimportして、 第一引数にvideoを読み込むコンテイナーを。 第二引数に読み込みが終了したnetStreamを(つまりvideoのもと)。 例 var theNetStream:netStream = loader.getNetStream("video"); //netstream var tv:TilingVideo = new TilingVideo(videoContainer_mc, theNetStream); //videoContainer_mcにtheNetStreamのvideoをタイリングする TilingVideo.asファイル右クリックで保存してくださいです。 アイデアとしては、 一つのビデオを読み込み後、ステージ分のbitmapを敷き詰めてやり、それぞれをenterFrameで ビデオを描写してやれば一つのビデオがタイリングされたように見えるという事です。 つまりビデオを読み込み後、ビデオごとタイリングしたらすごく重くなるので EnterFrameしたbitmapをしきつめてやればファイルサイズも軽いということですな。 使い方としてはこれをボタンが押されたらタイルをしきつめてやり次の情報が表示されたら 案外かっこいいのでは?いや、かっこいいはず。大好き。愛してる。
Categories:
Focus Web,
Japanese,
flash — Tags:
AS3.0,
bitmap — @ 8:37 pm
久しぶりの投稿かもしれない。
そうそう、AS3.0を触りだして
やっぱりやってみたいこの表現。
ランダムにテキストをガチャガチャ表示。
色々見てみるとAS2.0でのやり方はネットにちらほらと
説明してくださる方がいたのですが、
AS3.0(あまりかわらないけど・・)で自分流に
作成してみようと思いコリコリ書いてみた。
AS3.0テキストをランダムにコリコリ(画面内をクリックしてください)
RandomText.as
引数は2つ作成したんですが、
一つ目(tf2の箇所)はダイナミックテキストに記述したインスタンス名をいれてください。
2つ目(canadaの箇所)は表示したい文字を代入してくだされ。
import RandomText;
var text1:RandomText = new RandomText(tf2, "CANADA");
text1.start(); //スタートで起動
見てると気持ちがいい・・。
最初、長さとかも変えられるようにしようかなと思ったのですが
めんどくさかったのでその機能はつけませんでした。
アルゴニズム的にもそこまで難しい事をしていないので
このくらいの量になるのかもしれないのですが、
コードでもし改良の余地あり!と思われたらぜひご連絡くださいませ><
Categories:
Japanese,
flash,
ウェブ,
テクノロジー — Tags:
AS3.0 — @ 6:35 pm
とある仕事でflvを使った仕事をさせていただいたのですが、
いくぶんflash自体そこまで詳しくないのでflvの終わり判定で
こまった。
困ったらヘルプということでflashのヘルプをみてみたら・・・
普通にのってるじゃないか・・。
NetStreamクラスのインスタンスにNetStatsuEvent.NET_STATUSイベントを登録。
これでvideoが始まったり終わったり止められたりしたときにイベントを発動。
theNetStream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void {
trace(event.info.code); //info.codeで情報を監視する
}
これを行うとvideo に関する情報が色々とでてくるので
videoの終わる時に出てくる判定が“NetStream.Play.Stop”だそうです。
そこでこれをswitch文で拾ってやってれば大丈夫です。
あ、switch文じゃなくても普通にif文で拾ってあげてもいいのですが
ヘルプにのっていたのと、videoが始まったときにもイベントを拾えるので。。
function statusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case "NetStream.Play.Start":
trace("Start [" + theNetStream.time.toFixed(3) + " seconds]");
break;
case "NetStream.Play.Stop":
trace("videoが終わったぁ〜〜よ!!");
break;
}
}
Categories:
Japanese,
flash,
テクノロジー — Tags:
AS3.0 — @ 3:05 pm