忍者ブログ

painkiller_blog

仕事でwebのお仕事。プライベートで油絵描いてます。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

SWFWheelをインポートする場所

マウスホイール対応ということで

Spark projectにあるライブラリ「SWFWheel」を使用させていただきました。

その中でちょっと勘違いしていたところがあったのでメモ。
マウスホイールを使用しているクラスファイルにインポートしてそのクラスを
MainにaddChild()して使用していたのですがIE6,firefoxでは
機能していたのにsafariでは機能しなかった。
「あれ~?なんで???」状態になって見直した。

どうやらSWFWheelは子オブジェクトに使用している時でもMain.asでインポート、
SWFWheel.initialize(stage);
しないとsafariでは機能しないみたい。

なまじwindowsで動いただけに動揺してしまった。

それにしても便利なライブラリだな。制作者に感謝、感謝です。


PR

読み込んだswfのイベントについて

ちょっとハマったのでメモ。

読み込んだ外部swfを新しく作ったsprite()であるカレンダーにaddChildして表示した。
calender = new Sprite();

private function calendar_show():void {
            cal_URL = new URLRequest("****.swf");
            cal_loader= new Loader();
            cal_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compHandler);
            cal_loader.load(cal_URL);
        }
private function compHandler(e:Event):void {
            calendar.addChild(cal_loader);
}


でこれがいらなくなったときにremoveする際
private function next_clkHandler(e:MouseEvent):void {
calendar.removeChild(cal_loader);
           cal_loader.unload();
}
としたんですけど、子のイベントが消えていないためエラーが出ました。
原因はremoveEventListener();で子のイベントを消去していないから。

対処としては読み込んだswfに
addEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
private function removeHandler(e:Event):void {
(このファイル内でaddEventListenerしたイベントをremoveEventListenerします)


これでOK。






AS3でXMLの読み込み

いろんな方のサンプルを見てどうにか作ってみました。
EventDispatcherを使ってみたかったんですよね。

ま、何とかできました。
わからんわからんと拙い僕が書いたのできっと初心者の方でも分かってくれるはず。

ASファイル

mouseEnabledしたときの注意点

例えばボタンインスタンスに1フレーム目にボタンのノーマル状態、
sample1.jpg






2フレーム目にアクティブ状態、
sample2.jpg






3フレーム目にボタンイベントが効かなくなった状態、
sample3.jpg







をそれぞれ配置します。

で、それぞれにイベントを追加します。
btn.addEventListener(MouseEvent.ROLL_OVER, RoverHandler);
btn.addEventListener(MouseEvent.ROLL_OUT, RoutHanlder);
private function RoutHanlder(e:MouseEvent):void {
            e.target.gotoAndStop(1);
}
private function RoverHandler(e:MouseEvent):void {
            e.target.gotoAndStop(2);
}
ってかんじで。

さて、先ほど条件分岐してボタンイベントが効かなくなったときには
btn.mouseEnabled = false;
とするのですが、ボタンが効かなくなった瞬間、ROLL_OUTのイベントも一緒に実行するみたいです。
どうやらマウスがロールアウトしたと判断するみたいですね。

回避するにはmouseEnabledと一緒にremoveEventListenerでイベントを削除したら思い通りにいきました。





タイムラインでのrootへのアクセス

root、第一フレームstop()を記述してムービークリップを配置。
そのムービークリップからrootの次のフレームに移動したくてroot.nextFrame()って、単純に書いただけではだめ。
MovieClip(root).gotoAndStop(2);と記述するのでした。

オープニングflashのときによく使う。

Copyright © painkiller_blog : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新CM

[10/08 イズカワタカノブ]

最新TB

ブログ内検索

アクセス解析

ブログを評価する「ブログレーダー」