ASが運営するWebサイトに飛びます

2007年11月30日

イベントサウンドで外部swfのサウンドを制御する

外部swfでループを伴うサウンドを制御するにはイベントサウンド処理する事お勧めします。

イベントサウンドは何度ループしても必要な処理量は変わりませんが、ストリーミングはループすれば
した分だけ処理を必要とするからです。

標準的なイベントサウンドの再生方法。

「サウンド」タブで再生したいサウンドを選択。同期を「スタート」に設定。「繰り返し」タブで繰り返したい数を設定。


標準的なイベントサウンドの停止方法。
同期を「スタート」させたサウンドを再生している時にそのサウンドを「ストップ」に設定しているフレームに
飛ばすと止まります。

これからプログラムで効率よくイベントサウンドの再生を停止する方法を模索予定
posted by 神風記 at 12:48| サウンド | このブログの読者になる | 更新情報をチェックする

2007年11月29日

引数にデフォルトの値を設定

引数のデフォルト値を設定する事ができる。
デフォルト値を設定するには関数に引数を設定する際に数値を入れる。
その数値が引数のデフォルト値になる。

例題

defaultParameterという関数に引数を設定。第一引数にデフォルト値を設定しない引数。第二引数にデフォルト値、「12」を設定した
引数を設定。


defaultParameterにアクセスする際に、第一引数だけに「1」の値を入れる。
defaultParameterが 呼び出し元が設定した値の1と、defaultParameterが第二引数に設定したデフォルト値の「12が出力される」


function defaultParameter(ef:uint,sp:Number=12)
{
trace(ef+sp);
}

defaultParameter(0)// 0,12
posted by 神風記 at 10:41| 変数の参照 | このブログの読者になる | 更新情報をチェックする

2007年11月28日

「ctrl」のキーイベントを感知して処理を実行

「ctrl」キーを押すと処理を実行する。

ctrlのキーコードは「17」。

ボタンを押すとイベントを発行するのは

「KeyboardEvent.KEY_DOWN」

押していたボタンを離すとイベントを発行するのは

「KeyboardEvent.KEY_UP」


var isSkip:Boolean=false;

var index_ui:uint=0;

stage.addEventListener(KeyboardEvent.KEY_DOWN, ctrlDownHandler);

//faは
function ctrlDownHandler(event:KeyboardEvent){
if(event.keyCode == 17){

trace("開始!!"+index_ui);
isSkip=true;

trace("処理一");

trace("処理2");

index_ui++;

trace("終了"+index_ui);



}
}

stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpFunc);

function KeyUpFunc(event:KeyboardEvent){
if(event.keyCode == 17){
trace("ctrlが離された時点でのindex_ui="+index_ui);

isSkip=false;
}
}
posted by 神風記 at 13:54| キーボード処理 | このブログの読者になる | 更新情報をチェックする

「ctrl」のキーイベントを感知し処理を実行

「ctrl」キーを押すと処理を実行する。

ctrlのキーコードは「17」。

ボタンを押すとイベントを発行するのは

「KeyboardEvent.KEY_DOWN」

押していたボタンを離すとイベントを発行するのは

「KeyboardEvent.KEY_UP」


var isSkip:Boolean=false;

var index_ui:uint=0;

stage.addEventListener(KeyboardEvent.KEY_DOWN, ctrlDownHandler);

//faは
function ctrlDownHandler(event:KeyboardEvent){
if(event.keyCode == 17){

trace("開始!!"+index_ui);
isSkip=true;

trace("処理一");

trace("処理2");

index_ui++;

trace("終了"+index_ui);



}
}

stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpFunc);

function KeyUpFunc(event:KeyboardEvent){
if(event.keyCode == 17){
trace("ctrlが離された時点でのindex_ui="+index_ui);

isSkip=false;
}
}
posted by 神風記 at 13:22| キーボード処理 | このブログの読者になる | 更新情報をチェックする

2007年11月27日

クリックしてハンドラされるイベントとタイマーイベントでハンドラされる関数を統一

テストのテスト。

クリックしてハンドラされるイベントとタイマーイベントでハンドラされる関数を同じにしました。


var isAuto:Boolean=true;

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


auto_tm.addEventListener(TimerEvent.TIMER,sampleHandler)

function sampleHandler(evt:Event)
{
trace("アクセス");
if(isAuto)
{
trace("trueなのでタイマーイベントで定期的にアクセス");

auto_tm.start();
}

}

sample_mc.addEventListener(MouseEvent.CLICK,sampleHandler)
posted by 神風記 at 13:30| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年11月26日

unload () メソッドでLoaderオブジェクトがロードしたswfを消去する。

Loaderオブジェクトがロードしたデータを消去するunload () メソッドについて解説します。

unload メソッドを使うことLoaderがロードしたデータを消去する事ができます。

例題

Loaderがロードしたswfをunload()メソッドを使って消去。

var my_lo:Loader=new Loader();

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,loadHandler)

my_lo.load(new URLRequest("sample.swf"))

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

unLoad_tm.addEventListener(TimerEvent.TIMER,unloadHandler)

addChild(my_lo)

function loadHandler(evt:Event)
{
trace("ロード完了");

trace("my_lo="+my_lo.content)//[object MainTimeline]

unLoad_tm.start();
}

function unloadHandler(evt:Event)
{
trace("my_loのデータを消去します");

my_lo.unload();

trace("my_lo="+my_lo.content)//null

unLoad_tm.stop();


}

Loaderでロードしたデータが不要になったらすぐにunload()メソッドでデータを消去しておく事をお勧めします。
posted by 神風記 at 01:19| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月25日

サイト開設

posted by 神風記 at 16:15| 日記 | このブログの読者になる | 更新情報をチェックする

2007年11月24日

「navigateToURL」メソッドのおさらい

Webサイトにアクセスするには「navigateToURL」メソッドを使います

第一引数にサイトパス、第二引数に_blankなど開くウィンドゥの形式を指定します。

例題

sample_mcというmcをクリックするとindex.htmlに飛びます。

sample_mc.addEventListene(MouseEvent.CLICK,gameMCClickHandler);

function gameMCClickHandler(evt:Event)
{
trace("evt"+evt.target)
navigateToURL(new URLRequest("index.html"),"_blank");
}
posted by 神風記 at 16:37| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年11月23日

配列にアクセスする時はデータ型を指定する事でアクセスが高速化される

配列にアクセスする時はデータ型を指定する事でアクセスが高速化されます。キャストという言い方もあります。

例題

整数値と文字列を入れた配列の値をデータ型を指定して取り出す。


my_arr=new Array();

my_arr[0]=5;

my_arr[1]="あいうえお";

trace(uint(my_arr[0]))//整数値のデータ型uint()で値を取り出す

trace(uint(my_arr[0]))//文字列のデータ型String()で値を取り出す

5という整数値を格納したmy_arr[0]から値を取り出すには
uint(my_arr[0])でuintのデータ型を指定して取りだします。

「あいうえお」という文字列を格納したmy_arr[1]から値を取り出すにはString(my_arr[1])でStringのデータ型を指定して取り出します。

データ型を指定して値を取り出す事で配列へのアクセスが高速化されます。

配列へアクセスする際はデータ型を指定して値を取り出す事をお勧めします。
posted by 神風記 at 18:28| 高速化 | このブログの読者になる | 更新情報をチェックする

2007年11月22日

Loaderがファイルのロードに失敗した時のIOErrorEvent.IO_ERROR

Loaderがファイルのロードに失敗した時のIOErrorEvent.IO_ERRORについて解説します。IOErrorEvent.IO_ERRORはLoaderやURLLoaderがファルのロードに失敗した時のイベント処理です。なんらかの事情でファイルが正常にロードされない事もあるので、Loaderを使う処理を行う時は、ロードに失敗した時の事も考えてIOErrorEventの処理をきちんと設定しておく事をお勧めします。

例題

URLLoaderがファイルをロードした際に、ファイルがみつからなかった場合のIOErrorEvent.IO_ERRORで設定した関数にアクセス。

xmlLoader.addEventListener (IOErrorEvent.IO_ERROR,xmlIoErrorEvent);

xmlLoader.load(new URLRequest("notfound.swf"));;

function xmlIoErrorEvent(evt:IOErrorEvent)
{
trace("XMLのロードに失敗しました。")


}
posted by 神風記 at 08:33| イベント | このブログの読者になる | 更新情報をチェックする

2007年11月21日

一つのLoaderで新しいswfをロードすると前にロードしたswfのデータは消去される。

一つのLoaderで新しいswfをロードすると前にロードしていたswfのデータは消去されます。
posted by 神風記 at 08:04| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年11月20日

addEventListenerでイベントを定義したLoaderオブジェクトをnewで初期化するとaddEventListenerで定義した イベントも初期化される

addEventListenerでイベントを定義したLoaderオブジェクトをnewで初期化するとaddEventListenerで定義した
イベントも初期化されます。
newで初期化したLoaderに初期前のLoaderと同じ振る舞いをさせたい時は同じイベントをもう一度設定する必要があります。

例題 Loaderがswfをロードが完了したら完了通知のイベントをトリガさせる。初期化した後にロードしてもイベント定義が初期化
されているため、完了通知のイベントはトリガしない。

var my_lo:Loader=new Loader();

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler)

my_lo.load(new URLRequest("sample.swf"));

function completeHandler(evt:Event)
{

//ファイルをロードが完了した際にトリガされるイベント

}


my_lo.load(new URLRequest("sample.swf"));

//my_loオブジェクトを初期化する

my_lo=new Loader();

my_lo.load(new URLRequest("sample.swf"));//newで初期化されているためイベントがトリガされない
posted by 神風記 at 12:36| イベント | このブログの読者になる | 更新情報をチェックする

2007年11月19日

ダイナミックテキストにフォントを定義

ダイナミックテキストにフォントを定義するには、「TextFormat」オブジェクトのfontメソッドを
使用します。

font:String [read-write]

TextFormat.font="フォント名"

""にフォント名を指定します。

このフォント名を指定したTextFormatオブジェクトをテキストフィールドに適用する事で
テキストフィールドにフォントが定義されます。

ちなみにテキストフィールドにTextFormatオブジェクトを指定するにはdefaultTextFormatメソッドを使用します。

my_txt.defaultTextFormat=my_fmt;

var my_txt:TextField=new TextField();

var my_fmt:TextFormat=new TextFormat();

my_fmt.font="Arial"

my_txt.defaultTextFormat=my_fmt;

my_txt.text="フォントテスト";
posted by 神風記 at 13:06| テキストフィールド | このブログの読者になる | 更新情報をチェックする

2007年11月18日

定数を決めるconstについて

定数を定義するconstについて解説します。

定数とは値を一度だけ指定する変数です。



const samlple_ui:uint=10;

samlple_ui=20//error

constで定義したsample_uiには違う値を代入する事はできません。

一度定義した後は絶対に変更しない数をconstで定義するとバグの防止に繋がります。

プログラムの不具合を防ぐために変更しない数はconstとして定義しておきましょう。




定数 (値を 1 回だけ割り当てることができる変数) を指定します。
posted by 神風記 at 17:49| 変数の参照 | このブログの読者になる | 更新情報をチェックする

2007年11月17日

スライダーのコンポーネントを使って外部swfで読み込んだ音声ファイルのボリュームを調整しました。

スライダーのコンポーネントを使って外部swfで読み込んだ音声ファイルのボリュームを調整しました。後日仕組みを解説したいと思います。

以下ソースコード

import fl.events.SliderEvent;

var my_arr:Array=new Array();

var my_lo:Loader=new Loader();

var seBgm_lo:Loader=new Loader();

var se_lo:Loader=new Loader();

var seBgm_obj:Object;

var my_obj:Object;

var se_obj:Object;

my_obj=my_lo;

seBgm_obj=seBgm_lo;

se_obj=se_lo;

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler)

seBgm_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler)

se_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler)

my_lo.load(new URLRequest("sound/bgm.swf"));

seBgm_lo.load(new URLRequest("sound/se_bgm.swf"));

se_lo.load(new URLRequest("sound/se.swf"));

function completeHandler(evt:Event)
{
trace("ロード完了");

var bgmTrans:SoundTransform = my_obj.content.soundTransform;

var seTrans:SoundTransform = se_obj.content.soundTransform;

trace("trans="+bgmTrans.volume)

config_mc.bgmVol_txt.text=""+bgmTrans.volume*100;

config_mc.seBgmVol_txt.text=""+seTrans.volume*100;

//var previewBgmVol_num=trans.volume*100;

//bgmVol_txt.text=""+previewBgmVol_num;

}

config_mc.bgmSlider_vol.addEventListener(SliderEvent.THUMB_DRAG,bgmVolumeSliderChangeFunc)

config_mc.seBgmSlider_vol.addEventListener(SliderEvent.THUMB_DRAG,seBgmVolumeSliderChangeFunc)

function bgmVolumeSliderChangeFunc(evt:Event)
{
trace("bgmここです");

var trans:SoundTransform = my_obj.content.soundTransform;

trans.volume = config_mc.bgmSlider_vol.value;

my_obj.content.soundTransform = trans;

var previewBgmVol_num:uint=trans.volume*100;

config_mc.bgmVol_txt.text=""+previewBgmVol_num;
}

function seBgmVolumeSliderChangeFunc(event){

trace("seここです");

var seBgmTrans:SoundTransform = seBgm_obj.content.soundTransform;

var seTrans:SoundTransform = se_obj.content.soundTransform;

seBgmTrans.volume = config_mc.seBgmSlider_vol.value;

seTrans.volume = config_mc.seBgmSlider_vol.value;

seBgm_obj.content.soundTransform = seBgmTrans;

se_obj.content.soundTransform = seTrans;

var previewSeBgmVol_num:uint=seBgmTrans.volume*100;

trace("previewSeBgmVol_num="+ previewSeBgmVol_num)

//trace("seTrans.volume ="+seTrans.volume +"seBgmTrans"+seBgmTrans.volume)

config_mc.seBgmVol_txt.text=""+previewSeBgmVol_num;
};
posted by 神風記 at 23:35| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年11月16日

swfのラベル名を取得するcurrentLabels プロパティ について

swfのラベル名を取得するcurrentLabels プロパティ について開設します。

currentLabels:Array [read-only]

currentLabelsプロパティはswfのラベル名をすべて取得する事ができます。取得したラベル名は配列で返します。

ロードした外部swfのラベル名にアクセスするには

loader.content.currentLabels;

loaderがロードした外部SWF内のラベル名を配列でまとめて返してくれます。
posted by 神風記 at 03:32| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月15日

ロードした外部SWFのラベル名とラベル名のフレーム番号を取得

ロードした外部SWFのラベル名とラベル名のフレーム番号を取得します。

var ef_lo:Loader=new Loader();

var ef_obj:Object;

ef_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,getHandler)

ef_lo.load(new URLRequest("get.swf"));

function getHandler(evt:Event)
{
ef_obj=ef_lo

var my_arr:Array =ef_obj.content.currentLabels;

trace("my_arr="+my_arr[2].frame)
}

後日詳しく記述します。
posted by 神風記 at 08:33| 外部SWFの操作 | このブログの読者になる | 更新情報をチェックする

2007年11月14日

SoundMixerクラスでタイムラインに配置したサウンドオブジェクトのボリュームを制御する

SoundMixerクラスでタイムラインに配置したサウンドオブジェクトのボリュームを制御します。

SoundMixerクラスを使うとswfのタイムライン内に配置したサウンドのボリュームを制御できます。

SoundMixerクラスのsoundTransformプロパティを使ってボリュームを調整します。

soundTransform:SoundTransform [read-write]

ボリュームを調整する時は
SoundMixer.soundTransform=soundTransform
という風にします。
SoundMixer.soundTransformにボリュームプロパティを設定したsoundTransformオブジェクトを代入する事で、swf内のすべての音声ファイルのボリュームを調整できます。

今後もswf内のサウンドのボリュームをボタンで調整するなど具体的な使用方法を研究していきます。

例題

swf内に埋め込まれた音声ファイルのボリュームを0.5に設定。

タイムラインに音楽ファイルを読み込んだswfに下記のプログラムを記述します。

var soMix_st = SoundMixer.soundTransform;
soMix_st.volume=0.5;
SoundMixer.soundTransform=soMix_st;
posted by 神風記 at 02:31| サウンド | このブログの読者になる | 更新情報をチェックする

2007年11月13日

オブジェクトがaddChild(表示)された時にイベントを配信するEvent.ADDED

オブジェクトがaddChild(表示)された時にイベントを配信するEvent.ADDEDについて簡単に記述します。

Event.ADDEDはオブジェクトがaddChild(表示)された時にイベントを配信します。
頻繁に表示非表示にするオブジェクトの制御やクラスを使ってステージを参照する際に役に立ちます。

後日使用例をアップしたいと思います。
posted by 神風記 at 02:00| 深度の調整 | このブログの読者になる | 更新情報をチェックする

2007年11月12日

表示したらイベントを配信するEvent.ADDED

表示したらイベントを配信するEvent.ADDEDを使います。後日詳しく記述します。

オブジェクトがaddChildされたら(表示されたら)イベントを配信します。頻繁に、表示、非表示を行うオブジェクトやクラスのステージの参照に使えそうです。
posted by 神風記 at 13:49| 深度の調整 | このブログの読者になる | 更新情報をチェックする