Macでもマウスホイールのイベントが使えるようにできるSWFWheelを使ってみたのですが、Mac版Firefox(バージョンは2だった)で動作しなかったんですよねー。

FlashをHTMLに貼る為のライブラリであるところのswfobjectを使ったら大丈夫だった。ってかそもそもswfobjectって結構標準的にみんな使ってるモノなんですねーHTMLコーディング最近全然やらなかったから知らなかった。

というかコレ、バグ報告したほうがいいんだろうか?そもそもバグなのかどうか自信無いんですが。

ASの話題なら写真やイラストをアップしなくて済むので楽だなあと思っている順加です。代わりにソースコードでもアップしろって感じですけどこんばんは。

三月の頭に向けて新しいサービスをリリースするので、今追い込みをかけているところなのですが、いかんせん初めてやることばかり(そもそもAS3で作るのが初めてだった)なので、ちょっとした簡単そうなことでもつまづき転んでつまづき起き上がって作ってますよ。

んで今日の落とし穴は、ドラッグできるムービークリップが重なりあっていた時に、片方のイベントリスナーをstageに設定していたからもう片方がドラッグできなくなっちゃってたよ、というもの。

イベントリスナーをそれぞれドラッグするMCに変更してことなきを得た。

気づいてしまえばすごく簡単なことだったんだけど、解せないのは、イベントリスナーをstageに登録していなかった方のムービークリップを、別のムービークリップに入れ子にした途端にドラッグできなくなってしまったということ。それまではどちらもドラッグできたんですけど。

あれ、なんか変な説明?
まあいいか。

イベントリスナーの管理をしっかりやりたいです。

§

関係ないけどここで耳寄り情報!
AS3でduplicateMovieClipできちゃう? - _level0.KAYAC

タイトル通りですが、これまでduplicateMovieClipしたいことが何度かあったけど諦め(?)てきたのでかなり嬉しい情報。やった!

AS3にもだいぶ慣れてきました(って前にも言ったか)。

新しいことを覚える為にはまず、「習うより慣れろ」。当たり前のことだけど、いまこれを実感しています。

今制作中のFlash新規案件がいよいよ佳境。
最近そうめん(Thread)の使い方に慣れてきて楽しいです。

次は既存案件の引き継ぎがあって、これは人が書いたスクリプトに触れるので勉強になります。
かなり、複雑なんですけど。

AS3始めたばかりの頃、複数のクラス間で変数を共有したい時どうするんだ!って半日ぐらい考えて自分で導き出した答えが、今回引き継いだFlashでも使われていたので、ちょっと安心しました。

具体的には、全部のクラスをドキュメントクラスでnewする時に、ドキュメントクラス自身をオブジェクトとして渡すようにしておくという方法。これでドキュメントクラスの変数を共有できる。

最初はaddEventListenerとかわけわかんなかったけど、何十、何百と書いてたら嫌でも覚えるよね。

大重美幸さんのAS3本

賞金っつっても大した額じゃないんですが。尾崎賞でいただいた商品券を使って、AS3の本を買いました。

詳細!ActionScript 3.0入門ノート2

「…〜入門ノート」の続編で「2」となっています。前のも参考書としてかなり活用させていただいていたのだけど、かなり身に付いてきた感じなので「2」を買ってみました。

もっと勉強するぞ〜

レンジでお馴染みのAluさんがくだらない(と自ら書いてた)社内向けFlashを作っていたのですが、マウスホイールのイベントがFirefoxだと2倍になっちゃって困る(わたしはそんな現象あるなんて知らなかった)よ!ムキー!と言うので調べてみました。

IEとかチョロメとかは問題ないのですが、FirefoxだとMOUSE_WHEELイベントが2回ずつ発生するみたいです。それは困る。

超絶ググってたのですがなかなか情報見つからなくて、困った時のwithout日本語検索で見つけたのがここ

わたしは簡単な英語しかわかりませんが、ASで何が書いてあるのかはわかるので、ASも言語なんだなあって実感しますね!

んでそれを元にこんなコードを書いてみました。

stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);  
var lastTimeWheel:Number = 0;  
function wheelHandler(e:MouseEvent) {  
var now:Number = new Date().getTime();  
if (now-lastTimeWheel) {  
//ここに処理を入れればいいんだよ  
trace("delta: " + e.delta + "tmillis: " +(now-lastTimeWheel).toString());  
}  
lastTimeWheel = now ;  
}  

結果、上手くいったようです。わたしも勉強になりました。…φ(.. )

余談ですがそのFlash、落武者の作品ですか?の問いに対してソッコー否定されてました。落武者のサーバにアップされてましたけどね。

先週のレポート、結局書いてないですが、そもそも野中さんのサイトに概要が書いてあったんですよね。
当日のスライドとサンプルも先日アップされました

自分でまとめることに意味がある気がしますけどね…(´・ω・`)

§

さて、今日は先週と全く同じ会場で別のフラッシュイベント。SPARK Projectの勉強会でした。
Adobe CS4日本語版の発売日ということもあり、Flash CS4の新機能紹介もあって興味津々。

Flash CS4? 昨日注文しましたよ。

勉強会の収穫

↑んで、今日の収穫

なぜか、クレイアニメの本をもらいました。
以上。

タイムラインにクラスファイルを読み込むコードを書いたら、エラーが出てうまくいかなかった。

パッケージ化してたらダメなのかと思ったりしたのだけど、気づいてみればクラスファイルにpublicが付いていないためだった。

前にもコレやった気がするけど忘れてたょぅ。と思ってメモ。

AS3、まだまだ慣れたとは言い難い。

Flash OOPの勉強会(主催:クスール)に行って、数学を勉強してきました。

内容は、Matrixの話。

Matrixってヘルプ読んでも全然わからなかったんだけど、つまりは数学の行列ということらしい。

行列ってなんだったっけ!

習った覚えはあるけど内容はすっかり忘れていたわたし。
でも今日の話を聞いたらなんとなくわかりました。

多分、わかったつもりになっているだけなので、ここでまとめてしまいたいのだけど、ここ数日寝不足が続いていたので今日はもう早く寝て明日にしたいです。

果たして明日で上手くまとめられるのだろうか…

  • loadPolicyFileはルートディレクトリにポリシーファイルがある場合は無効。
  • stageWidthとstage.widthは別物
  • Rectangle(x,y,x2,y2)だと思っていたら正しくはRectangle(x,y,w,h)だった。

以上の3本立てでお送りいたしました。

attachMovieって結構使いません?

AS3からこれは使えなくなって、ライブラリでリンケージしたムービークリップをnewしてさらにaddChildしなければならなくなりました。

んで、これだとインスタンス名が設定できないみたいで、この方法で配置したMCの関数やメソッドを呼びたいとか、変数を渡したいとかいう時にはどうしたらいいんですかと。

社長プロジェクトで作ったリアルタイムカウンターのflashアニメ、新たな数値を受け取ったら各自でアニメートする設定がしてある数字MCを上記の方法で生成しているんだけど、じゃあどうやって数値を渡しましょうかと。

答えはウェブで!

var mc:MyMC = new MyMC();//MCをnewする  
mc.name = "hoge";//nameを設定  
this.addChild(mc);//表示リストにadd  
var targetMC:MyMC= getChildByName("hoge") as MyMC;  
targetMC.countUp(n:Number);//targetMCがさっきaddしたhogeということに  

つまりは名前(name)を付けてgetChildByName()で掘り起こせばよかったんですねー

keyboard_arrow_up