トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     Now Loadingの後、FLV_動画を再生させる。
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
永井勝則
Åê¹ÆNo.45818
投稿日時: 2010-9-15 23:21
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: Now Loadingの後、FLV_動画を再生させる。
これは、AS3.0への移行する際の、Flashからの温情またはおせっかいであって、
onEnterFrameという名前をつけてはいけないというわけではありません。
もし本当に思ったように動かないのであれば、問題は別のところにあるのではないでしょうか?

mytimer.addEventListener(Event.ENTER_FRAME, onEnterFrame);
はいかにもおかしいコードです。

引用:
「Warning: 1090: 移行の問題 : ActionScript 3.0 では、onEnterFrame は Flash Player によって実行時に自動的にトリガされません。...」


----------------
永井勝則:
himco.jp :

s_fuku
Åê¹ÆNo.45784
投稿日時: 2010-9-14 17:31
新米
居住地:
投稿: 3
使用環境:
MacBook Pro, Mac OS X 10.6.2, Flash CS4
Re: Now Loadingの後、FLV_動画を再生させる。
永井勝則 様

その後、少し間があいてしまいました。ご意見いただいた後、なんとかできそうだと思ったのですがもう少し基本から知らなければいけないと思い、基本的なプログラムでAS3を使いながら勉強を続けていました。

そこで、ご意見を参考にさせていただき、FLV再生のコードを以下のように書き換えてみました。
しかし、このままだと
「Warning: 1090: 移行の問題 : ActionScript 3.0 では、onEnterFrame は Flash Player によって実行時に自動的にトリガされません。...」
という警告が出て、動きません。私の書いたコードに問題があるのだと思うのですが、自分ではどうも分からなくなってしまいました。ご意見いただければ幸いです。よろしくお願いいたします。

s_fuku
以下書き直してみたプログラムコードです。


/**********/
var videoURL:String="video.flv";
var connection:NetConnection;
var stream:NetStream;

var bar:Shape = new Shape();
var g:Graphics=bar.graphics;
g.beginFill(0xFF0000);
g.drawRect(0, 0, 100, 10);
g.endFill();
bar.x = 10;
bar.y=350;
bar.scaleX=0;
addChild(bar);



var tf:TextField = new TextField();
tf.x=10;
tf.y=320;
tf.background=true;
tf.autoSize=TextFieldAutoSize.LEFT;
addChild(tf);

var mytimer: Timer ; 



connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);


function netStatusHandler(event:NetStatusEvent):void {
	switch (event.info.code) {
		case "NetConnection.Connect.Success" :
			connectStream();
			break;
		case "NetStream.Play.StreamNotFound" :
			trace("Unable to locate video: " + videoURL);
			break;
	}
}




function connectStream():void {
	stream=new NetStream(connection);
	stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
	stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
	var video:Video = new Video();
	mytimer = new Timer(33);  

    video.x = 250;
    video.y = 200;
	video.height = 450;
    video.width = 800;
	
	video.attachNetStream(stream);
	stream.play(videoURL);
	stream.pause();
	addChild(video);
	mytimer.addEventListener(Event.ENTER_FRAME, onEnterFrame);
	//myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
	mytimer.start();
}



function securityErrorHandler(event:SecurityErrorEvent):void {
	trace("securityErrorHandler: " + event);
}

function asyncErrorHandler(event:AsyncErrorEvent):void {
	// ignore AsyncErrorEvent events.
}



function onEnterFrame(evt:TimerEvent):void {
	var loaded:Number=stream.bytesLoaded/stream.bytesTotal;
	tf.text=Math.round(stream.bytesLoaded/1000)+" of "+Math.round(stream.bytesTotal/1000)+" KB loaded ";
	percentBox.text = loaded * 100 + "%";
	bar.scaleX = loaded;

	if (loaded>=1) {
		trace("ロード完了");
		mytimer.stop();
		mytimer.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
		trace("bufferLength : " + stream.bufferLength);
		trace("bufferTime : " + stream.bufferTime );
		stream.resume();
	}	
}

/**********/
永井勝則
Åê¹ÆNo.44919
投稿日時: 2010-5-12 23:09
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: Now Loadingの後、FLV_動画を再生させる。
その通りです。
enterFrameイベントはステージが再描画されるときに発生するので、Flashで言うアニメーションに適しています。
ただし下記の”アニメーション的に表示させたい”は何を指して言っておられるのか分からないので、何とも言えません。

引用:
Timerクラスの場合ですと指定した間隔でのイベント送信(例えば時計の表示など)には適しているけれども、
テキストフィールドに「読み込み中に何パーセント」という数値をアニメーション的に表示させたい場合は少し不向きでENTER_FRAMEを使ったほうがいいということでしょうか。


enterFrameイベントを使ったイベントリスナーは、
この場合なら、
アニメーションを開始したい時点で
addEventListener(Event.ENTER_FRAME, onEnterFrame);
を実行し、
アニメーションを終わらせたい時点で、
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
を実行します。
onEnterFrame()リスナー関数には、アニメーションさせたい内容を書きます。
前のコードのTimerは1秒に1回と、遅いので、Timerはやめて全部enterFrameイベント依存に変えるとよいと思います。



----------------
永井勝則:
himco.jp :

s_fuku
Åê¹ÆNo.44915
投稿日時: 2010-5-12 19:25
新米
居住地:
投稿: 3
使用環境:
MacBook Pro, Mac OS X 10.6.2, Flash CS4
Re: Now Loadingの後、FLV_動画を再生させる。
永井勝則さま

投稿ありがとうございます。大変ありがたく思っています。

その後少しtimerHandlerについて調べてみました。
Timerクラスの場合ですと指定した間隔でのイベント送信(例えば時計の表示など)には適しているけれども、
テキストフィールドに「読み込み中に何パーセント」という数値をアニメーション的に表示させたい場合は少し不向きでENTER_FRAMEを使ったほうがいいということでしょうか。

もしそうだとすると、今回のスクリプト内にENTER_FRAMEを使った処理を同居させる事はできますでしょうか。少し試してみたのですが、どうもうまく動作してくれません。よろしくお願いいたします。


s_fuku


永井勝則
Åê¹ÆNo.44877
投稿日時: 2010-5-7 21:03
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: Now Loadingの後、FLV_動画を再生させる。
これはtimerHandlerで書いているコードだろうと思います。


引用:
動画再生前の読み込み中に何パーセントほど読み込まれているのかをテキストボックスに表示させたいと思い


----------------
永井勝則:
himco.jp :

s_fuku
Åê¹ÆNo.44851
投稿日時: 2010-5-5 19:28
新米
居住地:
投稿: 3
使用環境:
MacBook Pro, Mac OS X 10.6.2, Flash CS4
Re: Now Loadingの後、FLV_動画を再生させる。
初めて投稿させていただきます。フクシマと申します。

私もFLV_動画をシンプルに表示させる事ができず苦労している初心者です。
このスレッドのやり取りを読み、とても参考にさせてもらっています。


このスレッド内で永井勝則さまが示してくださったサンプルコードはまだすべて理解できている訳ではないのですが

function connectStream():void {

}
の函数の中に以下のように値を入れる事でFLV動画の表示位置と表示比率を変化させる事ができました。

video.x = 250;
video.y = 200;
video.height = 450;
video.width = 800;


その後、動画再生前の読み込み中に何パーセントほど読み込まれているのかをテキストボックスに表示させたいと思いサンプルコードをいじりながら試行錯誤しているのですが、なにぶん初心者のためいっこうに手がかりがつかめません。

何かご意見いただけましたらと思いここにコメントを書かせていただきました。
どなたか、よろしくお願いいたします。

s_fuku
ヨシハラヨシオ
Åê¹ÆNo.44646
投稿日時: 2010-3-21 10:27
新米
居住地:
投稿: 19
使用環境:
Mac Pro, Mac OS X 10.6.2, Flash CS4
Re: Now Loadingの後、FLV_動画を再生させる。
永井勝則さま

_(_^_)_ ありがとうございます。 私は、、3日どころか2週間、あえいでいました。

書いていただいたスクリプトを見ると、やはり私には無理だったなと思って眺めていました。ただいま貼り込み、無事に映像をロード成功いたしました。現在、映像のサイズ、比率が違うので、それをなんとかしようとしているところです。

まずは、お礼と思いました。

ヨシハラヨシオ
永井勝則
Åê¹ÆNo.44642
投稿日時: 2010-3-20 20:00
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: Now Loadingの後、FLV_動画を再生させる。
ビデオはActionScriptの中でも専門的というか独特の知識が必要で、
しかもそれらが結果に絡み合って作用するので、
簡単なものから始めて、少しずつ応用に移っていかないと、
訳が分からないことになってしまいます。

以下はAS30リファレンスのサンプルから拾ってまとめたコードです。

var videoURL:String="video.flv";
var connection:NetConnection;
var stream:NetStream;

var bar:Shape = new Shape();
var g:Graphics=bar.graphics;
g.beginFill(0xFF0000);
g.drawRect(0, 0, 100, 10);
g.endFill();
bar.x = 10;
bar.y=350;
bar.scaleX=0;
addChild(bar);

var tf:TextField = new TextField();
tf.x=10;
tf.y=320;
tf.background=true;
tf.autoSize=TextFieldAutoSize.LEFT;
addChild(tf);

var myTimer:Timer=new Timer(1000,0);

connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);

function netStatusHandler(event:NetStatusEvent):void {
	switch (event.info.code) {
		case "NetConnection.Connect.Success" :
			connectStream();
			break;
		case "NetStream.Play.StreamNotFound" :
			trace("Unable to locate video: " + videoURL);
			break;
	}
}

function connectStream():void {
	stream=new NetStream(connection);
	stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
	stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
	var video:Video = new Video();
	video.attachNetStream(stream);
	stream.play(videoURL);
	stream.pause();
	addChild(video);
	myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
	myTimer.start();
}

function securityErrorHandler(event:SecurityErrorEvent):void {
	trace("securityErrorHandler: " + event);
}

function asyncErrorHandler(event:AsyncErrorEvent):void {
	// ignore AsyncErrorEvent events.
}

function timerHandler(evt:TimerEvent):void {
	trace("bytesLoaded : " + stream.bytesLoaded);
	trace("bytesTotal : " + stream.bytesTotal);
	var loaded:Number=stream.bytesLoaded/stream.bytesTotal;
	tf.text=Math.round(stream.bytesLoaded/1000)+" of "+Math.round(stream.bytesTotal/1000)+" KB loaded ";
	trace(loaded *100 + "% ロード");
	bar.scaleX=loaded;

	if (loaded>=1) {
		trace("ロード完了");
		myTimer.stop();
		myTimer.removeEventListener(TimerEvent.TIMER, timerHandler);
		trace("bufferLength : " + stream.bufferLength);
		trace("bufferTime : " + stream.bufferTime );
		stream.resume();
	}
}


----------------
永井勝則:
himco.jp :

ヨシハラヨシオ
Åê¹ÆNo.44639
投稿日時: 2010-3-20 9:55
新米
居住地:
投稿: 19
使用環境:
Mac Pro, Mac OS X 10.6.2, Flash CS4
Re: Now Loadingの後、FLV_動画を再生させる。
永井勝則さま

引用先のご本人様ですね。ご返事ありがとうございます。

FLVPlaybackを使った簡単なストリーミングまでは成功していました。書かなくてすみませんでした。スキンの変更、Jw player等も試してみましたが大変に便利ですね。私がやりたいのは、20%程先に読み込んでから映像をスタートしたり、F簡単なアニメーション(数字のカウントアップ、%表示等)なんですが、スキンもコントロールも必要ないのです。後、映像が始まる前にちょこっとなにか演出したい、FLVPlayback、コンポーネントの編集も試したのですが、どつぼにはまってきて、、きっと、FLVPlaybackを使ってもできるのでしょうが、、。他に他にシンプルな方法があるのではと、探していたのです。そして至ったのが、永井さまの過去のコメントでした。

大変にぶしつけなお願いですが、、引用先のバージョン2の、3の記述の仕方を教えていただけないでしょうか?<(_ _)>
永井勝則
Åê¹ÆNo.44633
投稿日時: 2010-3-19 23:03
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: Now Loadingの後、FLV_動画を再生させる。
ただビデオを再生したい場合には、どう考えてもFLVPlaybackコンポーネントを使うのが一番簡単です。
第一、コードは1行も必要ありません。
アドビのオンラインヘルプに
ストリーミングまたはプログレッシブダウンロード用のビデオの読み込み
があるので、これを読んで試されてはどうでしょうか?

記述されているコードはActionScript 3.0のようですが、
引用されているリンク先ーで使われているには前のバージョンの2.0なので、当然エラーが出ます。


----------------
永井勝則:
himco.jp :

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops