さて、Flash制作に関して、Flash CS4(CS3)でタイムラインアニメーションのswfしか作ったことがないようなデザイナーが初めてActionScriptを触るということを前提に、Hello World ならぬ、Hello 谷 を紹介しようと思います。

はじめてのAS3と言ってもいろいろありますが、ここでは.as(ActionScript)ファイルを使ったflashプロジェクト作成の基本を覚えることを目的とします。

コレってどういう意味?
ココはどういうことをしているの?
ということはとりあえずおいといて(ちょっとは説明するけど)、パブリッシュ時の出力ウィンドウに「谷」と表示させましょう。

新規ファイル作成 AS3

▲「ファイル」>「新規…」で、flaファイルを新規作成します。AS3を選択するのを忘れずに。

新規ファイル作成 asファイル

▲続いて、同じく「ファイル」>「新規」で、ActionScriptファイルを作成します。
図がMacだったりWindowsだったりするのは気にしないでください。

まずはflaファイルとasファイルを保存します。同じフォルダに保存するようにしてください。
ここでは「helloTani.fla」と「Main.as」としましょう。

保存したら、flaファイルのプロパティウィンドウで、ドキュメントクラスの設定をします。

ドキュメントクラスの設定

▲プロパティウィンドウの、図の欄に「Main」と入力します。これは先ほど保存したasファイルを指定しています。先ほどつけた名前と同じになるようにしてください(拡張子を除く)。

ドキュメントクラスとは、そのASプログラムの中で、一番の基盤となるクラスです。すべてのロジックは、このasファイルから実行されます。

次にMain.asを編集していきます。とりあえずは何も考えずに下記をコピペしてください。

package {  
import flash.display.Sprite;  
public class Main extends Sprite {  
public function Main():void {  
trace('谷');  
}  
}  
}

ここでなにをやっているかは、ひとまずおいといて、ここでは「こういうもの」としておいてください。

8行目辺りで、traceと書いてあるのを確認してください。

trace('谷');

traceメソッドは、タイムライン中心のアニメーションしか触ったことが無い人でも、Flashに馴染みがあればわかる人も多いかもしれません。

trace()は、その内容を、swfのパブリッシュ時に出力ウィンドウへ書きだすメソッドです。
プログラムのデバッグをするために使いまくりますので、覚えておきましょう。

ここまでできたら、ASファイルを保存して(ここ大事)、パブリッシュしてみましょう。

出力ウィンドウに「谷」と表示されたらOKです。お疲れ様でした。

谷

FlashDevelop関連のお役立ち情報サイト集(順加視点で良く利用している)

ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそもASに配列をランダムに並べ替えるメソッドが無いので、自作する しかないんですよね。

ググれば出てきたかもしれないんですが、難しいことでもないので、探すより早いと思って自分で考えて作りました。

最初はこうだったんだけど

function shuffleArray(arr:Array):Array {  
var retArr:Array = new Array();  
while (arr.length > 0) {  
retArr.push(arr.splice(Math.floor(Math.random() * arr.length), 1).toString());  
}  
return retArr;  
}  

これだと配列の要素が全部Stringになっちゃうんで
こうしました

function shuffleArray(arr:Array):Array {  
var shArr:Array=new Array();  
for (var i:uint=0; i<arr.length; i++) {  
var tempObj:Object=new Object();  
tempObj.val=arr[i];  
tempObj.key=Math.random();  
shArr.push(tempObj);  
tempObj=null;  
}  
shArr.sortOn('key',Array.NUMERIC);  
var retArr:Array=new Array();  
for (var j:uint=0; j<shArr.length; j++) {  
retArr.push(shArr[j].val);  
}  
shArr=null;  
return retArr;  
}  

よろしくどうぞ☆

iPhotoに登録している写真のサムネイルが、一部おかしいぞ?変だ!
一部の写真のサムネイルが、全く関係のない写真になってしまっていて、コリャ困ったなぁ、と思っていたのですが、「教えて!Google先生」したら、解決法を発見。

  1. iPhotoが起動していたら終了する
  2. iPhoto Libraryの場所を確認(デフォルトでは、ホーム>ピクチャ)
  3. iPhoto Libraryを右クリックして、パッケージの内容を表示。
  4. Thumbで始まる3つのファイルを、ゴミ箱に入れる。
  5. iPhotoを起動する

と、「サムネールキャッシュを再構築中…」と出て、これが終了すれば正しいサムネイルになります。

以上備忘録。

はーい、まだ起きてます。
やることいっぱいで…主にXPのセットアップだけど…
今日は早寝するつもりだったんだけど…これは興奮して眠れないパターンかも。

さて、上記リンク先で語ったとおり、BootCampやめて、VMware Fusionを使い始めたんですよ。
メモリ増やさなきゃだけど、再起動せずにwindows環境が動かせるから、すごく便利。

で、メインマシンの(あくまでメインマシンの)PowerMacと、マウスとか共有したいよなあ、と思って探して見つけたのが、teleport

ネットワーク共有されていれば、相互でマウスポインタを行き来させられるー!

ゎーぃ、こりゃ便利だゎ。

ドネーションウェアなんだけど、なんか勢いで寄付してしまった。いいよ1ドルぐらい。

会社ではDELLのノートPCにディスプレイやらキーボードやらを繋いで使っているんですが、入社時に、使いたい周辺機器(マウスとか)があれば言ってください用意します!と言われたので、自宅のぱちょこん環境と近くしたーい、と思ってKensingtonトラックボールを会社でも使ってるんですよ。

で、なんだかわたしのPC、トラックパッドが使えないんだよねー、とかずっと思っていたんですけど、最近になってやっと、Kensington MouseWorks(トラックボールのドライバ)が原因であることがわかったのです。遅!!

どうやら、MouseWorksをインストールすると、それまでデフォルトで入ってたトラックパッドドライバが上書きされちゃうみたいで。

試行錯誤してみたところ…

  1. デルのサイトからトラックパッドドライバのインストーラをゲットしておく
  2. MouseWorksをインストールする
  3. トラックパッドドライバをインストールする

で、上手くいきました。

最初にインストーラをゲットしておくのは、なぜだか知らないけどMouseWorksがインストールされてると、トラックパッドドライバのインストーラがダウンロードできないからなのでした。

もしかしたら、MouseWorksのインストール時にトラックボールを挿した状態にしておけば↑こんな手順踏まなくても問題なかったかもしれないんだけど、今さらそれを検証するのはすごく面倒なので、謎のままにしておく!

以上今日もそんな自分用メモ。

PostToTwitterの設定

前のエントリーで、twitterにブログ更新を送信するMTプラグイン、PostToTwitterが思うように動いてくれない、と書きましたけれども。

「XML-RPC newPostメソッドを無視します。」にチェックを入れて設定したら、できました。

サーバーサイドスクリプトの知識はほとんど無いけれども、いろいろ試してみないとダメだなあ、と思いました。

PostToTwitterという、MTのプラグインを使って、メインブログの記事投稿をTwitterに反映させるように設定したんだけど、うまく動いてくれないんですよこれが。

このプラグイン、最新バージョン1.2.0では、記事の公開ステータスを「下書き」から「公開」にするとTwitter投稿、という設定ができるんですが、わたしはほとんど下書きなどしないし、必要ないのでこのチェックは外してる。

にもかかわらず、普通に投稿した記事がTwitされない。

試しに、投稿済みの記事を一旦「下書き」に戻してから再び「公開」にしたら、Twitされた…

今夜あたり、こんな余計な機能が無い古いバージョンに戻してみるか、他のプラグインを探してみるかします。

ん、ブログエントリをTwitter投稿する外部サービスはいろいろあるみたいですけどね。なんとなく使いたくないです。使ったら負けだと思っている。できることならMT内で解決させたい。

ボタンインスタンスにクリックとかイベントを登録するじゃないですか。(唐突に)

イベントハンドラでイベントを受け取って、event.targetとかでボタンのプロパティを抽出したりするじゃないですか。

ボタンインスタンスに別のインスタンスが入れ子になってると、その子インスタンスがtargetになるらしい。だからボタンインスタンス自身のプロパティが欲しい時は、event.target.parentとしないといけない。

知らなかったけどこれって結構知られてる話でした???

不勉強ですみません。

実は半年前ぐらいに、あれーなんかparentしないと上手くいかない時があるゃぁとか思ってたんですが、原因がはっきりしたのでメモしただよ。

Progressionで、CastSpriteクラスを使って、テキストを渡して表示するだけのクラスを作ろうとしたんですよ。そしたらうまくいかない。

テキスト流し込んだTextFIeldをaddChildしてるのに表示されないんです。んでプロパティをチェックしたら、インスタンスのwidth,heightが共に0。addChildした(はずの)TextFieldのwidth,heightはちゃんとしてた。ってことは、addChildの辺りで何か問題が起きてるのか?それともフォントの埋め込みが問題なのかな?

よくわからないけど、CastSpriteをやめてただのSpriteにしたら全く問題なかったです。

§

で、そのフォント埋め込みなんですが、flaファイル上で作ったTextFieldにembedFonts=trueでhtmlTextを設定した場合、でテキストを囲まないとフォントが埋め込まれないけど、TextFieldを最初からas3でnewしてあげるとfontタグが不要に。

んーふっ

§

で、前にも同じことがあったけど改めてメモなんだけど。

ProgressionでAddChildAtコマンドを使うときは、AddChildと混在させずにAddChildAtで統一しないと、配置するものの重なり順が思い通りになってくれません。

以上、そんなメモ書き。

keyboard_arrow_up