★AS3★ 音をならす
※ライブラリに音素材がmp3とかwavで入ってる場合
例)mcをクリックした時にクリック音をならす
①ライブラリで、音素材にリンケージ名をつけておく(例)SE_click)
②コードを書く
var se_click:Sound = new SE_click();
var ch:SoundChannel;
//mcクリックしたら音をならす
ch = se_click.play();
//音を止める
ch.stop();
seen from China

seen from Singapore
seen from Türkiye
seen from United States
seen from Serbia

seen from Singapore
seen from China
seen from China
seen from United States

seen from Maldives
seen from China

seen from Maldives
seen from China
seen from United States
seen from Germany
seen from United States
seen from Germany
seen from United States
seen from Germany

seen from United Kingdom
★AS3★ 音をならす
※ライブラリに音素材がmp3とかwavで入ってる場合
例)mcをクリックした時にクリック音をならす
①ライブラリで、音素材にリンケージ名をつけておく(例)SE_click)
②コードを書く
var se_click:Sound = new SE_click();
var ch:SoundChannel;
//mcクリックしたら音をならす
ch = se_click.play();
//音を止める
ch.stop();
★AS3★ returnとbreakとcontinue
すぐ忘れるから覚書。3つの使用例。
・return
function内で使う。①処理終了:function内でreturnを記述した以降の残りの処理を中断してfunctionを抜ける。②戻り値:(今回は省略)
・break
forなどループ内で使う。ループ終了:if文を使ってif内にbreakを記述。条件にあえばforを抜けて、それ以降のループも実行しない。
・continue
forなどループ内で使う。ループ飛ばし:if文を使ってif内にcontinueを記述。条件にあえばその回の処理はスキップして次のループを実行する。
★AS3★ テキストフィールドに打った文字をPCのローカルに保存する方法
SharedObject を使う。
最初に表示しておく文字を設定して、あとはswfを開いてtextfieldに文字を打ったら、その都度書いた文字が保存されてるというコード。
①まずはライブラリ?とかの方から、直にtextfieldをステージに置いて、インスタンス名を何でもいいからつける。textfieldの設定は、「TFLテキスト」で「編集可能」にしておく。縦書き・横書き・文字数・色とかは設定したい通りに。
②コードを書く。
//importはなぜか打たなくても動いたのでとりあえず省略。
//初期に表示しておく文字
var firstmoji:String ="ー記入例ー”;
//SharedObject「so」を作成しローカル共有オブジェクトの参照を得る
var so:SharedObject = SharedObject.getLocal("user_data”);//※1
//テキストフィールドへの表示
page_tab1.dai.textfield.text = firstmoji;//※2 A:初回orデータリセットした場合
if (so.data.kinyu_data != undefined) {//※2 B:2回目以降
page_tab1.dai.textfield.text = so.data.kinyu_data;//「textfield」に「so」データを表示
}
//テキスト入力に変化があれば関数 saveData を実行
page_tab1.dai.textfield.addEventListener(Event.CHANGE,saveData);
//関数 saveData の定義(保存)
function saveData(evt:Event) {
//「so」の “kinyuu_data" に入力値を保存
so.data.kinyuu_data = evt.currentTarget.text;
so.flush();//即時保存(swf閉じる時の自動保存ではなくて手動保存できる)
//trace(so.data.kinyuu_data);//※3
}
//関数 resetFnc の定義(リセット)
page_tab1.btn.addEventListener(MouseEvent.CLICK,resetFnc);//※4
function resetFnc(evt:MouseEvent):void{
so.clear();//「so」に保存されてるデータを削除
page_tab1.dai.textfield.text = firstmoji;//初回表示の文字を入れなおしておく
}
※1
・”user_data”は好きな名前をつけてOK。
・PCの中に”user_data"のデータがあればそれを参照するし、なければ自動で作られる。
※2
・A:初回→「page_tab1.dai.textfield」はインスタンス名。(3つのmcの入れ子構造)。textfieldは最初にインスタンス名をつけたやつ。
・B:2回目以降→もし「so」のデータに保存した “kinyu_data" が存在すればBを実行する。”kinyu_data”(記入データ)の名前は何でもOK。
※3
・トレースするとどういう入力タイミングで保存されてるかが見える。
※4
・「page_tab1.btn」はインスタンス名(2つのmcの入れ子構造)。リセットボタンのmc(インスタンス名:btn)を作って配置しておく。
★Flash★ ActionScript3.0 配列の複製と配列の昇順
<配列の複製>
var aArray = [10,3,8,5,1];
var bArray = aArray.slice();//aArrayを複製
trace(aArray); //出力 10,3,8,5,1
trace(bArray); //出力 10,3,8,5,1
<配列の昇順(小さい順)>
var aArray = [10,3,8,5,1];
var bArray = aArray.slice();//aArrayを複製
var bArray.sort(Array.NUMERIC);//bArrayを昇順に並替
trace(aArray); //出力 10,3,8,5,1
trace(bArray); //出力 1,3,5,8,10
※aArrayをbArrayに『代入』してbArrayだけ昇順にしようとしたらaArrayも昇順になってしまった。
var aArray = [10,3,8,5,1];
var bArray = aArray;//aArrayを『代入』!!
var bArray.sort(Array.NUMERIC);//bArrayを昇順に並替
trace(aArray); //出力 1,3,5,8,10
trace(bArray); //出力 1,3,5,8,10
AS3★一気に複数行にインデントを入れる
ひとつ後ろに下げたい時 command + ] ひとつ前に上げたい時 command + [
Flash AS3 イベントが発生してなくても最初から1回実行させておきたい関数があるときとか★
例えば、本来はa_btnかb_btnが押されたらjikkou関数が実行される。
_____________________________________________________
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
//処理内容(==>aとbどちらを押したかをmcを使って処理)
}
_____________________________________________________
これをa_btnは押してないけど、あるタイミング(起動してすぐの状態とか)でa_btnが押されたことにしてjikkou関数を実行したいとすると、単純に動かしたい場所に
jikkou();
↑こう書くとエラーが出てしまう。それに、a_btnもb_btnもあるからどっちを押したのかわからない。どう書いたら良いかもわからなかった。ので調べた。
<方法1>
ポイントは①関数をふたつにわけること。②最初のjikkou関数でevtをとって、次のjikkou2関数ではnull(何もなし)にしておくこと。
_____________________________________________________
var oshita = a_btn;//a_btnを最初から入れておく
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
jikkou2();//ここで1度実行
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
oshita = mc;//ローカル変数のmcをグローバル変数のoshitaに入れる。
jikkou2();
}
function jikkou2():void{
//処理内容(==>aとbどちらを押したかをoshitaを使って処理)
}
_____________________________________________________
<方法2>
ポイントは①dispatchEvent()ていうのを使う。②””でかこった名前は自分で自由につけてOK。2カ所とも同じ名前にしておくこと。③これだとふたつにわけたりしなくていいし短くていい!
_____________________________________________________
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
a_btn.addEventListener(“nandemook", jikkou);
a_btn.dispatchEvent(new MouseEvent("nandemook"));//ここで1度実行
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
//処理内容(==>aとbどちらを押したかをmcを使って処理)
}
_____________________________________________________ なんかこんな感じで動いたと思う! おしまい!
Flash ドロップシャドウの付け方
やり方は2種類。 ムービークリップのシンボルを作って、そのシンボルのプロパティから影を付ける方法と、asの中でコードを書いて影を付ける方法とある。 <シンボルのプロパティから付ける方法>
インスタンス名を書いたりするプロパティタブ?があってそこでいろいろ設定できる。その中に、「フィルター」というのがある。 「フィルター」をクリック ↓ 「+」と「−」の記号があるので、「+」をクリック ↓ 「ドロップシャドウ」を選択 ↓ 「ドロップシャドウ」のプロパティが現れる ↓ 角度・カラーなど適当に好きな値に設定 で、完成。 この場合は、『1フレーム目に影あり、2フレーム目に影なし』のシンボルを作って、条件によって gotoAndStop(1)か(2)とすることで影ありと影なしの画面を切り替える。 <asの中に書く方法>
var kage:DropShadowFilter = new DropShadowFilter();
// ドロップシャドウ付けるとき mc_1.filters = [kage];
//ドロップシャドウ消すとき mc_1.filters = null; 角度とかカラーとかいろいろ設定も変えたければ書けるけど 全部初期値で良い場合はこれだけでOK。こっちは条件によって、上記の通りコードを書けば影ありと影なしを切り替えれる。 『kage』は自分でわかりやすい名前で作ってOK。 『mc_1』というのは自分で名前をつけたインスタンス名のやつ。 あとはドロップシャドウを付ける時の決まった書き方。
Flash タイムラインとかasの全体的な動き その1★
flashはパラパラマンガ。 パラパラってやる1枚1枚の絵が1フレームにあたる。 1秒あたりに何枚表示するかをFlashではフレームレートで表す。 パラパラマンガの1枚=1フレーム。 バラバラする速さ=フレームレート。 1秒あたりのフレーム数を表す単位が”FPS”(frames per second)。 だいたい1秒30FPSくらいがよく使われている。 枚数が多いほど滑らかな映像。枚数が少ないほどカクカクした荒い映像になる。 10秒間で30FPSなら、300フレーム。(1秒で30フレームだから) プログラムなしでFlashの”トゥイーン”などの機能だけでも10秒間ムービーは作れるけど、プログラム(Flashのプログラミング言語はActionScript 3.0)を書いたりすると、数フレームですんだり、もっといろんなことができる。 このフレーム全体をタイムラインといって、flashのアニメーションはこのタイムラインにそって前から順番に再生されていく。