• ベストアンサー

flash初心者です script3.0のことで教えて欲しいのですが

初心者というか、flash初めて一週間くらいです。 昨日からようやくアクションスクリプト3.0の勉強を開始しました。 動画の編集やモーションエフェクトなどを作っていますが、言語を使ったプログラミングはうまれて初めてです。 初心者用の教本(一週間でマスターするアクションスクリプト3.0)を買って勉強してますが、プログラミング事態がはじまてなので、本の説明だけではよく分かりません。 どの問題をやっても、分かったような分からないようなという感覚です。数学も特に得意ではないし、理解の仕方がよくわかっていないのかもしれません。 そこで教本に出てきたスクリプトを書きますので それを解説してくれるような方がもしいましたら あつかましくも、お願いしたいのですが(汗) ●サンプル● このフラッシュは、カロリーを入力すると、それを散歩で消費するには 何分歩いたらよいかが分かるというプログラムです。 一分間の散歩で2.7kcalを消費するという設定です。 フラッシュの見た目はこんな感じです↓ 摂取カロリー 「  」kcal 散歩にすると 「  」分 となっていて、カロリーのとこに数字を入力して、たとえば720と入力すると、散歩のフィールドに266.66…とでます。 インスタンス名は 摂取カロリーのテキストは 「value_txt」 散歩のテキストは    「result_txt」  です。 そして教本のスクリプトは以下のようになっています。 //テキスト変更時に実行する変数を定義 function onTextChange(e:Event){ var kcal = value_txt.text; var min = kcal / 2.7; result_txt.text = min; } //テキスト変更時のイベントを登録する value_txt.addEventListener(Event.CHANGE,onTextChange); 以上です。 教本の説明では分かったようなわからんようなといった感じです。 どんどん次のレベルに行くし… このスクリプトを理解するにあたって理解しやすい 覚え方とかないでしょうか? どこかでしっかり根本をつかまないと進むにつれチンプンカンプンに なって行きます(泣) てかこの本はホントに初心者ようなのかと疑問です。 説明がいい加減な気がします。 どうぞよろしくお願いいたします。

  • Flash
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

私は AS3 初心者どころか,全く作成したことのない者ですが, だいたいの意味はわかります。 #1 の方の回答の一部分について補足です。 > ちなみに > function onTextChange(e:Event){ > ↑テキストが変わった時にe:Eventを行え。e:Eventの中身は以下の{}の中。 ここは違います。 ここは質問で書かれていらっしゃるとおり, > //テキスト変更時に実行する変数を定義 > function onTextChange(e:Event){ が正解です。 決して, > テキストが変わった時にe:Eventを行え。 > e:Eventの中身は以下の{}の中。 ではなくて, // テキスト変更時に実行する変数を定義 // (実行時にはイベントリスナーから 引数e を受け取る ) function onTextChange(e:Event){ というような意味です。 「value_txt」 は単なる TextField であって, 何某かのイベントを受け取る機能などは備えていません。 ※AS2までは   TextFieldクラスの中にイベントハンドラまで入っていましたから   TextField自体がイベントを受け取る機能も備えていました。   しかし,AS3では備えていません。 function onTextChange(e:Event){ } では { } 内の動作をするように関数として定義してあるだけです。 純粋に単に定義してあるだけです。 ほっておけば実行されることはありませんし, 「value_txt」 に対する関数であるというような関連付けもどこにもされていません。 単なる関数「onTextChange」です。 一番最後の行, //テキスト変更時のイベントを登録する value_txt.addEventListener(Event.CHANGE,onTextChange); ここで「value_txt」 に対するイベントリスナーを追加することによってはじめて, 「value_txt」 に CHANGE というイベントが発生したときに, 単なる関数「onTextChange」が実行されるようになります。 ただし, 書かれていらっしゃるものの場合, e:Event は意味を成しません。 使わないけど一応書いてあるだけです。 「onTextChange」の実行時,引数 e にはイベントが入って来ます。 このイベントeに対するターゲットが e.target などによって,取得するようなことができるので, 関数実行時に,何に対するイベントが発生したのかがわかります。 これによって, イベントeに対するターゲットが関数に絡んでした場合でも, 複数のもの(value1_txt,value2_txt,value3_txt,… など)に対して, 同じ関数を使い回しするようなことが可能になります。 つまり, 関数は関数で,何に対する関数でもない「onTextChange」を定義することによって, その関数を利用するときに, 対象物を決めることが可能になります。

fukumaru29
質問者

お礼

詳しい御回答、どうもありがとうございます! (^ー^)/ さらに理解が深まったように思います。 まだまだよく分からない感覚はたくさんありますが 数をこなしながら、理解を深めていくしかないですよね。 最後のイベントeに関する記述なんかチンプンカンプンです(汗) そのうちに「ああそういうことだったのか」となるように がんばります。 どうもありがとうございました。感謝感謝

その他の回答 (2)

回答No.2

スクリプトの解説は、ANo.1 さんがされていますので以下参考まで。 私はプログラマ系ですが、デザイン系の方にActionscriptを教える際に 以下の本が好評でした おしえて!! Flash 8 ActionScript http://item.rakuten.co.jp/book/3979115/ 古い本ですので、Actionscript2.0でソースの書き方が古いですが 絵を多用して最後までわかりやすく説明されていました。 プログラムの概念理解にも良いようでした。 新書でもあるとは思いますが、見かけたら中を覗いてみてください。 (買うときは古本屋でも…)

fukumaru29
質問者

お礼

参考書のご紹介、どうもありがとうございます。 書店に行った際にはチェックしたいと思います ヾ(@^▽^@)ノ

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

まず、ヘルプやリファレンスなどFLASH自身のガイドを参考にしましょう。例えば、スクリプトを入力したら、わからない部分を反転し、リファレンスを表示させると、その部分が的確なら解説されます。(製作者独自の単語だったりすると駄目です) お書きのスクリプトで function onTextChange は、解説されますし、 var .text なども。 解説文章はかなり硬い文章なので、わけがわかりにくいでしょうが、本を参考にされると少しはわかるかも・・・自分は初めの頃は一番下の事例のみで理解しようとしていました。^^; ちなみに function onTextChange(e:Event){ ↑テキストが変わった時にe:Eventを行え。e:Eventの中身は以下の{}の中。 var kcal = value_txt.text; ↑kcalに摂取カロリーのテキストを代入。 var min = kcal / 2.7; ↑minはkcalを2.7で割ったものを代入。 result_txt.text = min; } ↑散歩のテキストにminを表示。 でしょうか?(あまり自信はありません) なかなか簡単なサイトというものはありませんので、2.0などの解説サイトを参考にされてもいいかも。 http://homepage3.nifty.com/ginga-b/index.html ↑ここは比較的わかりやすいサイトだと思います。 参考URLは本格的ですが、かえってわかりやすいかな?

参考URL:
http://www.fumiononaka.com/Sample/F-site/ActionScript30_01.html
fukumaru29
質問者

お礼

ありがとうございます!! 大変参考になりました、本もこういう風にわかりやすく説明してくれたらいいのに、なんかいまいち分かりにくいんですよね。 なんか少しだけ暗号が文章に見えてきたという感じがします。 なるほどこういう「感覚」で見ていくんですね。 参考URLもすごく細かい手順で説明されていて勉強になりそうです。 がんばって精進いたします(*`ー´*) どうもありがとうございました。感謝感謝!

関連するQ&A

  • Acrobat Java Scriptについて教えてください。

    お世話になります。 Acrobat JavaScriptの初心者ですが、以下の問題で困ってます。 使用環境:Acrobat 4.05で、PDFフォームにてテキスト型のフィールドA,B,Cを作成しております。やりたいことは、AとBにデータが入力されるとCにA+Bの文字列を代入したいです。 つまり、Aに”012”と入力され、Bに”034”と入力された時、Cには”012034”を入れたいのです。 そのためフィールドcの書式スクリプトに var a;・・・・・・・・・・・・・・(1) var b;・・・・・・・・・・・・・・(2) a = this.getField("A").value;・・・(3) b = this.getField("B").value;・・・(4) event.value = a+b;・・・・・・・・(5) の5行を記述していますが、どうも(3)、(4)行目の段階で"012"の"0", "034"の"0"が消えてしまいます。 Acrobat5.0だと”valueAsString”のようなプロパティが追加されているようですが、Acrobat4.05の環境ではどうすればテキストの前のゼロを保留できるのでしょうか? どなたが教えてください.

  • JavaScript テキストボックス キーイベント

    JavaScript テキストボックス キーイベント こんにちは。趣味でプログラミングをしている者です。 タイマーを使って計算ドリルを作ったのですが、 特定のキーコードで正解かどうか判定する関数を呼び出そうとしたのですが、 テキストボックスにこたえを入力して、キーを押すたびに 「キーン」というような音が鳴るのですが、 その音は、どのような仕組みで鳴るのでしょうか? また、音を鳴らさないようにする方法がありましたら、 教えていただけないでしょうか よろしくお願いします <html> <head> <script type="text/javascript"> function init() { document.attachEvent("onkeypress", KotaeAwase); } function KotaeAwase() { if( event.keyCode == 13) { var key = 1; var kotae = parseInt( document.Form1.kotae.value ); var Result = document.Form1.result; if( kotae == key ) Result.value = "せいかいです!"; else Result.value = "ちがいます"; } } </script> </head> <body onLoad="init();"> <form name="Form1"> <input type="text" name="kotae" size="20"> <br><br> <input type="text" name="result" size="20"> <br> </form> </body> </html>

  • HTMLとJSでtxet内容を表示したい

    下記のコードで質問があります。 仕様としてはtextに何かを書き込んで追加ボタンでテキストボックスの下に書き込んだ内容が表示され保存されるという風にしたいですが途中から何を書けばいいかわからなくなってしまいました。 ご指導お願いいたします <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <head> <body> <input type="text" id="form_txt"> <input type="button" width="50" value="追加" onclick="add_txt()"> <script> function add_txt() { var result = document.getElementById('form_txt'); /*ここからが何を書けばいいかわかりません・・・。*/ } </script> </body> </html>

  • javascriptの入力制限keycode除く

    はじめまして javascript初心者です テキストエリアに数字のみ入力できるようにしたいと思い 以下のとおりソースを記述しました function numCheck(){ var num = document.frm.txt.value; var cnum = num.replace(/[^0-9]/,""); num = cnum; document.frm.txt.value = num; <form name = "frm"> <input type="text" onkeypress="numCheck()" value="txt"> </form> キーコードによる入力制限は考えません あと何が足りないでしょうか? よろしくご教授くださいm(__)m

  • if構文

    初心者でif構文がよくわからず質問させてください。 下記のようなボタンをつくり、 <form action="#"> <input type="button" value="うさぎ" id="txt" onclick="aGetElementById()" /> <input type="button" value="とり" id="txt" onclick=b"GetElementById()" /> </form> ボタンをクリックして、 <div><span id="box"></span>が大好きです。</div> のspanの中にvalue名(うさぎ・とり)を表示させ、『「value名」が大好きです。』と表示させたいのです。 Javascriptを下記のように書いてみたのですが、テキスト表示の切り替えがうまくいきません。 <script> <!-- function aGetElementById(){ var text=document.getElementById("txt"); var box=document.getElementById("box"); box.innerHTML=txt.value; } function bGetElementById(){ var text=document.getElementById("txt"); var box=document.getElementById("box"); box.innerHTML=txt.value; } --> </script> どうかおしえてください。 よろしくお願いします。

  • スクリプト改善

    おねがいします こちらのスクリプトは縦スクロールの音ゲームです。こちらを編集して横スクロールの音ゲームにしてもらえませんか?自分でやってもなかなかできなくて、、、 mport flash.events.Event; import flash.display.DisplayObject; import flash.events.KeyboardEvent; stop(); var se:SE1 = new SE1(); var hit:int,time:int; const speed:int = 10; var key:Array = [65,83,68,70,74,75,76,187]; var timeline:int = 0; var onp_y:Array = new Array(); init(); function init(){ txt_score.text = "0"; txt_combo.text = "0"; hit = 0; onp_y[0] = [36,110]; onp_y[1] = [42,123]; onp_y[2] = [48,155]; onp_y[3] = [81,165]; onp_y[4] = [89,200]; onp_y[5] = [95,211]; onp_y[6] = [103,260]; onp_y[7] = [110,300]; var onp_x = [160,220,280,340,460]; var clazz:Class = getDefinitionByName("o_001") as Class; for (var k:int=0; k<onp_y.length; k++){ for(var i:int=0; i<onp_y[k].length; i++){ var obj = new clazz(); obj.name = "onp"+k+i; obj.addEventListener (Event.ENTER_FRAME,update_onp); addChild(obj); obj.x = onp_x[k]; obj.y = -onp_y[k][i]*speed+mc_line.y; trace(-onp_y[k][i]); if(time < onp_y[k][i]){ time = onp_y[k][i]; } } } time += 12; //0.5秒 stage.addEventListener(KeyboardEvent.KEY_DOWN,pressKey); stage.addEventListener(Event.ENTER_FRAME,update_stage); stage.focus = stage; } function term(){ for(var k:int=0; k<onp_y.length; k++){ for(var i:int=0; i<onp_y[k].length; i++){ var ins:DisplayObject = getChildByName("onp"+k+i); ins.removeEventListener(Event.ENTER_FRAME,update_onp); removeChild(ins); } } stage.removeEventListener(KeyboardEvent.KEY_DOWN,pressKey); stage.removeEventListener(Event.ENTER_FRAME,update_stage); SoundMixer.stopAll(); } function update_stage(e:Event){ timeline++; if(timeline>time){ term(); if(hit<4){ gotoAndStop("bad"); }else if(hit<8){ gotoAndStop("nice"); }else{ gotoAndStop("great"); } } } function update_onp(e:Event){ var ins:Object = e.target; ins.y += speed; if(400<ins.y && ins.visible == true){ txt_combo.text = "0"; ins.visible = false; mc_hantei.gotoAndPlay("miss"); } } function pressKey(e:KeyboardEvent){ for(var k:int = 0;k<key.length;k++){ for(var i:int = 0; i<onp_y[k].length; i++){ var ins:Object = getChildByName("onp"+k+i); if(e.keyCode == key[k] && ins.hitTestObject(mc_line) && ins.visible == true){ txt_score.text = String(Number(txt_score.text)+10); txt_combo.text = String(Number(txt_combo.text)+1); hit += 1; //se.play(); ins.visible = false; mc_hantei.gotoAndPlay("great"); k++; break; } } } }

  • テキストファイルに記載されているか調べるには。スクリプト

    Jスクリプトの質問です。 県名のみ記載されている jusho.txt があります。 この中からある県名が記載されているか調べるスクリプトを作ろうとしてますがうまくできません。 登録県名があったらアラートで表示させるにはどうすればいいですか。 途中まで考えましたがわからなくなりました。 -------------------------------------------- //調べたい県名をここで入力 kenmei="愛知県" //登録住所か調べる。 var fso = WScript.CreateObject("Scripting.FileSystemObject"); var stream = fso.OpenTextFile("jusho.txt",1); //1は読み専用 while (stream.AtEndOfStream="false"){ var jusho = stream.ReadLine(); if(kenmei=jusho){alert ("登録されてます")}; }; ----------------------------------------- jusho.txt と スクリプトは同じフォルダにあります。

  • 初心者です。Java scriptでの引数の使いかたについての質問です

    初心者です。Java scriptでの引数の使いかたについての質問です 初心者です。Java scriptでの引数の使いかたについての質問です。下記でやりたいことは、 requestText関数の引数02とか03を、java script なかの httpのアドレスの中のabに記入するには どうしたらいいかということです。あるいは、そうしたことが出来るのでしょうか。 <input type="button" value="02" onclick="requestText(02)"> <input type="button" value="03" onclick="requestText(03)"> function requestText(ab){ var ajax = new Ajax.Request("http://www.geocities.jp/abate/ab.html", {method: "GET", onSuccess: gotData}); function gotData(xmlhttp) { document.getElementById("a02").innerHTML = xmlhttp.responseText; } }

  • flash初心者で action script 3.0で webサイト

    flash初心者で action script 3.0で webサイトを作っているのですが、なかかうまくいきません。 1.60個程のシンボルを配置してそれがじょじょに現れるようにする。 2.60個のシンボルの中から一つを選びクリックすると、クリックしたシンボル以外はステージ外に移動、もしくは消え、 選択したシンボルが、任意のサイズまで拡大される。 3.拡大されたシンボルをクリックすると、元の小さいサイズまで縮小され、残りの消えたシンボルが現れる。 というようなものです。 1はなんとかできたのですが、2.3がどうもうまくいきません。 ちなみに1の式は下記のように書きました。 なにぶんプログラムは初めてなもので、聞きかじったことをなんとか応用してなので、かなり長く汚いかと思われます。 下記の式と60個のボタンシンボルは、1つのムービーシンボル内に格納してあります。それをメインのタイムラインに配置しています。 var flg : Number = 0; var a : Number = 0; var b : Number = 0; var c : Number = 0; var d : Number = 0; (略) var eh : Number = 0; var ei : Number = 0; シンボル1.addEventListener(Event.ENTER_FRAME,function(event){ // ムービークリップを半透明 シンボル1.alpha = a; シンボル2.alpha = b; (略) シンボル58.alpha = eh; シンボル59.alpha = ei; if(flg==0){ a +=0.1;} if(a>0.5){ b += 0.1;} if(b>0.5){ c += 0.1;} (略) if(di>0.5){ ei += 0.1;} if(ei>1){ flg=1} }); それとボタンをクリックして、他のフレームに飛ばす処理も上の式の下に追加で書いてみたのですが、パブリッシュすると TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at MethodInfo-11() というエラーが無限にでてしまいます。 ソースは下記です シンボル1.addEventListener(MouseEvent.CLICK, vans); function vans(event:MouseEvent):void { gotoAndStop(2); } 本当に初心者です。 説明もへたくそですが、どうぞご享受下さい。

  • スクリプトでは

    回答ありがとうございました。 なるほどそういう考えもあるのですね。 ちょっと思ったのですが、セルに式を書くと 消えてしまうので、スクリプトで出来ないかなと。 品番を入力、変更したというイベントが発生したら 単価を参照しにいきセットするみたいな。 全くの初心者で申し訳ありません。 このようなスクリプトはどの様なコードになるか ご存知ないでしょうか? すいません、始めてリクエストします。 よろしくお願いします。

専門家に質問してみよう