ドット絵を作りました。
48×48で。
簡単に、ロックマンの敵キャラをモデルに。
そしてもう一つ。キノコ。
ドット絵を作りました。
48×48で。
簡単に、ロックマンの敵キャラをモデルに。
そしてもう一つ。キノコ。
テーブルで入力フォームを作りました。
忘れてしまうので、メモです。
テーブルを組む場合、始めに初期化を行う。
また、テーブル要素の中にテーブル要素を入れて入れ子にも出来る。
問い合わせフォームを作った時に、入力フォームの幅を合わせるのに役立った。
入れ子にした時は、IE6で崩れてしまうので、widthの長さに注意。セルの横幅の合計を統一する。
<TR>~</TR>要素はTableRowの略で、横方向の一行を定義。
<TH>~</TH>要素はTableHeaderの略で、セルの内容が「見出し」となるヘッダセルを作成。
<TD>~</TD>要素はTable Dataの略で、セルの内容が「データ」となるデータセルを作成。
使用例 <table celspacing="4" cellpadding="12" border="0" align="center"> <caption>サービスプラン</caption> <tr bgcolor=orange> <th scope="col">項目</th> <th scope="col">プランA</th> <th scope="col">プランB</th> <th scope="col">プランC</th> <th scope="col">プレミアム</th> </tr> <table celspacing="4" cellpadding="12" border="0" align="center"> <caption>サービスプラン</caption> <tr bgcolor=orange> <th scope="col">項目</th> <th scope="col">プランA</th> <th scope="col">プランB</th> <th scope="col">プランC</th> <th scope="col">プレミアム</th> </tr> <tr bgcolor=lightblue> <th bgcolor=orange scope="col" cols=1>容量</th> <td>1GB</td> <td></td> <td> <table celspacing="4" cellpadding="12" border="0" align="center"> <caption>サービスプラン</caption> <tr bgcolor=lightgreen> <th bgcolor=lightgreen scope="col">項目</th> <th bgcolor=lightgreen scope="col">プランA</th> <th bgcolor=lightgreen scope="col">プランB</th> <th bgcolor=lightgreen scope="col">プランC</th> <th bgcolor=lightgreen scope="col">プレミアム</th> </tr> <tr bgcolor=lightgreen> <th bgcolor=lightgreen scope="col" cols=1>容量</th> <td bgcolor=lightgreen>1GB</td> <td bgcolor=lightgreen></td> <td bgcolor=lightgreen>5GB</td> <td bgcolor=lightgreen></td> </tr> <tr bgcolor=lightgreen> <th bgcolor=lightgreen scope="col">サブドメイン</th> <td bgcolor=lightgreen>1つ</td> <td bgcolor=lightgreen>2つ</td> <td bgcolor=lightgreen>3つ</td> <td bgcolor=lightgreen>4つ</td> </tr> </table> </td> <td></td> </tr> <tr> <th bgcolor=orange scope="col">料金</th> <td bgcolor=orange>2000円</td> <td bgcolor=orange>4000円</td> <td bgcolor=orange>5000円</td> <td bgcolor=orange>6000円</td> </tr> </table>
項目 | プランA | プランB | プランC | プレミアム | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
容量 | 1GB |
|
|||||||||||||||||
料金 | 2000円 | 4000円 | 5000円 | 6000円 |
演算子
trace(5+10); trace(100-42); trace(int(100/3)); trace((100-3)*20);
比較演算子
trace(num1==num1); trace(num1>num2); trace(num15)&&(10trace((1015));
型変換
int型に変換して演算
trace(int("10") - 5);
※数値として読み取れないとき、intやuintでは「0」を返す。Numberでは「NaN」(非数)を返す。
文字列に型変換
trace(String(10) + String(24));
10と24を文字列で返す。
文字列を数値Numberに型変換して、変数「num」に代入する。
var num:Number = Number ("123.45");
条件分岐
var num :int = 0; trace("ifステートメント実行前"); if(num < -1){ trace("trueの処理"); }else{ trace("flaseの処理") } trace("ifステートメント実行後");
//ifステートメント実行前
//flaseの処理
//ifステートメント実行後
条件分岐その1
var num:int=61; if (num<=10) { trace("numが11以下の処理"); } else if (num <= 20) { trace("numが11から20の処理"); } else if (num <= 60) { trace("numが21から60の処理"); } else { trace("それ以外"); }
switch文
var text01:String = "たま" switch (text01) { case "たま" : trace("たま"); break; case "はち": trace("はち"); break; default : trace("犬の名前"); }
条件分岐その2
var num:Number = 10; if(num <= 10){ trace("10より小さい") } var str:String = "こんにちは"; if(str == "こんにちは"){ trace("true") } var num2:Number = 3.14; if(num2 == 3.15){ trace("true") }else{ trace("3.14以外"); }
条件分岐その3
var score:Number = 90; if (score<=30){ trace("可"); }else if(score<=80){ trace("良"); }else{ trace("優") }
条件分岐その3
var str2 :String = "D"; if(str2 == "A"){ trace("Aを選んだ。") }else if(str2 == "B"){ trace("Bを選んだ。") }else if(str2 == "C"){ trace("Cを選んだ") }else{ trace("それ以外") }
条件分岐その4
var str3 :Number = 70; if(str3 >= 50 && str3 < 100){ trace("値は適正です。") }
forループ
for (var i:int = 0; i< 5; i++){ trace("5回繰り返します。") }
boyNameがString「のび太」の時、かつ、yearが「10」のとき
var boyName:String = "のび太"; var year:Number = 10; if(boyName =="のび太" || year <= 10){ trace("条件を両方満たしています") }
mcを10個横に等間隔にaddchildする。
var mc:MovieClip = new Mc; var mcWi:Number = 10; for (var i:int = 0; i< 10; i++){ mc = new Mc(); mc.x = mcWi +i*(mc.width + mcWi); addChild(mc); }
10%の確率で「当たり」
while (Math.random()>0.1) { trace("はずれを引きました。"); } trace("当たり")
30%の確率でループ処理を中断
for (var i:int = 1; i<=10; i++) { trace(i + "回目のチャレンジを実行しています。"); //30%の確率でループ処理を中断 if(Math.random() < 0.3){ trace("ループを中断します"); break; } }
//10回処理を繰り返すが、3の倍数の時だけは任意の処理を実行しない
for (var i:int=1; i<=10; i++){ trace( i+ "回目の処理をしています。"); //3の倍数だけ残りの処理を中断 if(i % 3 == 0){ continue; } trace(i + "は、3の倍数ではありません。"); }
3の倍数をはずして表示
for(var i:int = 1; i<11 ;i++){ if(i % 3 == 0){ continue; } trace("変数iの値は"+ i + "です"); }
繰り返し処理を入れ子(ネスト)する。
for (var i:int = 1; i<= 3; i++){ //外側の条件式 trace("chpter"+ i); for(var j:int = 1; j<= 2; j++){ //内側の条件式 trace(i + "-" + j); } }
出力結果//
chpter1
1-1
1-2
chpter2
2-1
2-2
chpter3
3-1
3-2
カモがころころ飛ばされていく動画です。
それだけ
かわいすぎw
Particleについて勉強します。
パーティクルは、液体、花火、爆発、雪、炎のような多くの粒子からなる物体をシミュレーションする方法の一つ。
パーティクルシステムは通常、オブジェクト指向の手法で書かれます。
ParticleDemo.as
package { import flash.display.Sprite; import flash.events.Event; import flash.display.MovieClip; public class ParticleDemo extends Sprite { // public var emitterX:Number = stage.stageWidth/2; // public var emitterY:Number = stage.stageHeight/2; public function ParticleDemo() { //コンストラクタ(初期処理) stage.addEventListener(Event.ENTER_FRAME,onLoop, false, 0, true); } private function onLoop(evt:Event):void { var p:Particle = new Particle(mouseX, mouseY, Math.random()*11 - 6,//x速度の値 6を引いてオフセット Math.random()*-15, //y速度の値 マイナスの記号だと上方向にあがる。 0.5,//重力 Math.random()*0xFFFFFF);//ランダムな色 addChild(p); } } }
重力が0.5でy速度の値の値が-15の場合がこれです。
package { import flash.display.Sprite; import flash.events.Event; import flash.display.MovieClip; public class ParticleDemo extends Sprite { public function ParticleDemo() { //コンストラクタ(初期処理) stage.addEventListener(Event.ENTER_FRAME,onLoop, false, 0, true); } private function onLoop(evt:Event):void { var p:Particle = new Particle(mouseX, mouseY, Math.random()*11 - 6,//x速度の値 6を引いてオフセット Math.random()*-1, //y速度の値 マイナスの記号だと上方向にあがる。 2,//重力 Math.random()*0xFFFFFF);//ランダムな色 addChild(p); } } }
重力が2で、y速度の値の値が-1の場合がこれです。
private function onRun(evt:Event):void { _yvel += _grav; _xpos += _xvel; _ypos += _yvel; x = _xpos; y = _ypos; if (_xpos < 0 || _ypos < 0 || _xpos > stage.stageWidth || _ypos > stage.stageHeight) { removeEventListener(Event.ENTER_FRAME, onRun); parent.removeChild(this); } }
これにより、パーティクルがステージの左、右、下を超えてステージの外に出るとイベントリスナーを削除して表示リストからも削除しています。
for文の練習のために、きもちの悪いサンプルを作ります。
やりたいこと
- 画面いっぱいに矢印を敷き詰める。
- 矢印がマウスを見ながら回転する。
変数を宣言。
横の最大列数(9、19、29)
縦位置(何行目なのか)
横位置(何列目なのか)
var maxTate:Number = 19; var tate:Number = 0; var yoko:Number = 0;
for文をまわして300個の矢印を作ります。
for (var i:Number = 0; i < 300 ; i ++){ var arrowMc:MovieClip = new ArrowMc(); arrowMc.name = "arrow"+i; /* arrowMcをx軸をyoko[45(arrowMcの横幅)×何列目(0~9)]に、 y軸をtate[40(arrowMcの縦幅)×何行目]配置する */ arrowMc.x = 30 * yoko; arrowMc.y = tate; /* maxTateが9、19、29の時は 行を一段下へ下げるので、tateに40(arrowMcの縦幅分)増やす そして、maxTateも次の最大列にするために10(MAX列分)増やす */ if(maxTate == i){ tate += 30; maxTate += 20; } /* 次に配置するarrowMcの横位置を設定するために yokoを1列分増やす 1行は19個まで、 yokoが19になったら、0にリセット */ yoko += 1; if(yoko > 19){ trace(yoko); yoko = 0; } //arrowMc.x = arrowMc.y = 20 + i * 10; addChild(arrowMc); }
完成がこちらです。
外部 XML ドキュメントの読み込み
URLLoaderクラスとはリファレンスにあるとおり外部リソースをロードするために使用します。URLLoaderインスタンスにはdataFormatというプロパティがあります。
dataFormatプロパティの値がURLLoaderDataFormat.TEXTの場合、受け取るデータは、ロードされたファイルのテキストを含むストリングです。
dataFormat : String = “text”
ダウンロードしたデータがテキスト(URLLoaderDataFormat.TEXT)生のバイナリデータ (URLLoaderDataFormat.BINARY)、または URL エンコードされた変数(URLLoaderDataFormat.VARIABLES)のいずれであるかを制御します。
ActionScript 3.0 言語およびコンポーネントリファレンスURLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。動的なデータ駆動アプリケーションで使用するテキストファイル、XML、その他の情報をダウン ロードする場合に便利です。
ActionScript 3.0 言語およびコンポーネントリファレンス
URLLoaderを宣言
var urlLoader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest("atom.xml"); urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
COMPLETEと、IO_ERRORのリスナー。
urlLoader.addEventListener (Event.COMPLETE , urlLoaderCompleteHandler); urlLoader.addEventListener (IOErrorEvent.IO_ERROR , URLLoaderIOErrorFunc); urlLoader.load(req);
ExternalInterfaceでhtmlのjavascriptから読み込む。
function urlLoaderCompleteHandler(evt:Event) { var textData:String = evt.target.data; trace(textData); trace("読み込み完了"); //ExternalInterface.call("hoge" ,textData); } function URLLoaderIOErrorFunc(evnet:IOErrorEvent):void{ trace("ioerrorが発生しました。"); }
Adobe Developer Connection (ADC) と連動する開発者向けイベント、ADC MEETUP の第3回目「ADC MEETUP ROUND 03 / MAX RETWEET 」が11月12日(土)に開催されます。
今年10月に米国ロサンゼルスで開催されたAdobe MAX 2011のテーマです。
無料イベントなので参加します。
Adobe Developer Connection (ADC) と連動する開発者向けイベント、ADC MEETUP の第3回目「ADC MEETUP ROUND 03 / MAX RETWEET 」が11月12日(土)に開催されます。
MAX 2011のGeneral Session(基調講演)で発表されたCreative Cloudの紹介の他、実際にMAXに参加した開発者たちが現地でキャッチしたHTMLやFlash関連の技術情報についても解説していきます。展示コーナーでは、リリース直前のAndroid版 Adobe Touch Appsも体験できます。今回も参加者には、素敵な特典がありますのでどうぞお見逃しなく!
セミナー対象者
HTML5やFlashを使った制作や開発に携わる方参加費
無料事前登録制定員
400名
ゲストスピーカー
株式会社ピクルス / 山下 美緒
株式会社サイバーエージェント / 大谷 剛
clockmaker.jp / 池田 泰延
大日本印刷株式会社 / 丸山 真実
taiga.jp / 廣畑 大雅アドビスピーカー
西山 正一
太田 禎一
岩本 崇
轟 啓介
来場者特典もあるようなので。
初心者が陥りやすいということで、しっかり覚えておきたいのですが、いかんせん基礎がしっかりしていないのでメモします。
多くのプログラミング言語では、値渡しと参照渡しによるパラメータの受け渡しの違いを理解しておくことが重要です。この違いは、コードの設計方法に影響します。
値渡しとは、関数内で使用するためにパラメータの値がローカル変数にコピーされることです。 参照渡しとは、実際の値ではなく、パラメータへの参照のみが渡されることです。
実際の値がコピーされるのではなく、 パラメータとして渡される、変数への参照が作成され、関数内で使用するためにローカル変数に割り当てられます。 関数外の変数への参照では、ローカル変数は元の変数の値を変更する機能を提供します。
ActionScript 3.0 では、値はすべてオブジェクトとして格納されているため、すべてのパラメータは参照渡しです。
しかし、Boolean、Number、int、uint、String などのプリミティブデータ型に属するオブジェクトには、値渡しのように動作する特別な演算子があります。
例えば、次のコードは、xParamと yParamという 2 つの int 型パラメータを定義する passPrimitives()という関数を作成します。この 2 つのパラメータは、passPrimitives()関数の本体内で宣言されるローカル変数に似ています。関数がパラメータ xValueおよび yValueで呼び出されると、パラメータ xParamおよび yParamは、xValueと yValueで表される int オブジェクトへの参照で初期化されます。 パラメータはプリミティブなので、値渡しのように動作します。
xParamと yParamは、初期状態では xValueと yValueオブジェクトへの参照のみが含まれますが、関数本体内の変数の変更によりメモリ内に新しい値のコピーが生成されます。
値渡しとは、関数内で使用するためにパラメータの値がローカル変数にコピーされることです。
参照渡しとは、実際の値ではなく、パラメータへ の参照のみが渡されることです。実際の値がコピーされるのではなく、パラメータとして渡される、変数への参照が作成され、関数内で使用するためにローカル 変数に割り当てられます。
関数外の変数への参照では、ローカル変数は元の変数の値を変更する機能を提供します。ActionScript3.0 では、値はすべてオブジェクトとして格納されているため、すべてのパラメータは参照渡しです。しかし、Boolean、Number、int、uint、 Stringなどのプリミティブデータ型に属するオブジェクトには、値渡しのように動作する特別な演算子があります。
(Flash CS3 ドキュメンテーション より)
何となく概念は分かったような、そうでないような。。
配列(Array)
クラス(Class)
オブジェクト(Object)
は参照渡し。
String
Boolean
MovieClip
は値渡し。
//値渡し var hoge:String = "hoge"; var bool:Boolean = true; function foo( val:String , b:Boolean ):void{ hoge = "hogehoge2"; val = "fuge"; b = false; trace( hoge ); trace( bool ); } foo( hoge , bool ); //参照渡し var arr:Array = [0,1,2,3]; function bar( array:Array ):void{ array.push(4); trace( array ); trace( arr ); } bar( arr ); var arr2:Array = arr; trace(arr2); arr2.push(5); trace(arr2); trace(arr); //値渡し var mc1_copy:MovieClip = mc1; mc1_copy.alpha = 0.2; var tf_copy:TextField = tf; tf.text = "あいうえおかきくけこ";
配列(Array)
クラス(Class)
オブジェクト(Object)
は参照渡し。
String
Boolean
MovieClip
は値渡し。