以前紹介したスクロールペインをホイール標準対応にしました。内部で JSModifier というクラスを使用することにより Mac のホイールにも標準対応しています。
今回のスクロールペインのデモ(※ 要 FlashPlayer 9)
Firefox や Opera だと前回のものは、バーやコーナーをドラッグしたまま swf の領域外に持っていった状態でマウスボタンをリリースすると、領域内に戻っても引っ付いたままになってしまっていましたが、これも JSModifier クラスによって改善されています。前回のものも掲載しておきますので、両方を試してみて下さい。
前回のスクロールペインのデモ(※ 要 FlashPlayer 9)
ちなみに JSModifier というクラスは何かというと、Mac のホイールを認識しない問題や、wmode を使用した際の不具合、その他ブラウザに起因する問題を JavaScript を用いて改善するクラスで、使い方は JSModifier.initialize(stage) するだけです。
ASDoc をアップロードしてますので、どういった問題が改善されるかなどの詳しい情報は JSModifier の項を参照して下さい。
unbland as3 library の機能で ActionScript 上で JavaScript の DOM 操作やイベントハンドリングを行う機能があります。そんな機能の紹介です。
ActionScript
package {
import flash.display.Sprite;
import org.unbland.core.events.JSEvent;
import org.unbland.core.external.JavaScript;
import org.unbland.core.external.JSObject;
public class Example extends Sprite
{
public function Example():void
{
// JS が利用できない環境なら終了
if (!JavaScript.enabled) {
return;
}
// JavaScript.proxy で JS 操作用のオブジェクトを取得
var document:JSObject = JavaScript.proxy.document;
var body:JSObject = document.body;
// 最初は赤色に
body.style.backgroundColor = "#FF0000";
// ドキュメント領域をクリックしたらイベントを発生させる
document.addEventListener(JSEvent.CLICK, function (e:JSEvent):void
{
// イベントが発生したら黄色に
body.style.backgroundColor = "#FFFF00";
// イベントの詳細情報をアラート
var temp:String = "";
for (var key:String in e.info) {
temp += "key : " + key + " / value : " + e.info[key] + "\n";
}
JavaScript.alert(temp);
});
}
}
}

※ 09.04.16 追記:
バージョンアップしました。くわしくは “自作ライブラリのスクロールペインをバージョンアップ” をご覧下さい。
Bitbucket に自作ライブラリを一挙に公開しました。unbland as3 library といいます。現在開発中ではありますが、公開記念に UI 作成用のクラスを紹介したいと思います。
スクロールペインのデモ(※ 要 FlashPlayer 9)
「コンポーネントを使えば?」なんて声が聞こえてきそうですが、標準のコンポーネントはスクロールのイージングに対応していなかったり、スキンのカスタマイズがものすごく面倒くさかったり、拡張性が低かったり、バグが多かったりと問題が多い(扱ったことがある方なら分かって頂けるかと思います)ので自分で実装してみました。
出来るだけ拡張性を持たせ、且つ見た目のカスタマイズなどが簡単に行えるように作成しているつもりです。具体的には、Flash IDE 上でデザインしたオブジェクトにインスタンス名を付け、抽象クラスを継承させたクラスで各種設定を記述するだけで簡単に作成出来ます。
その他にも色々な機能を実装していますので、興味の有る方は unbland as3 library Wiki をご覧になって遊んでみて下さい。サンプルなんかも置いています。今後は TextInput, TextArea, ComboBox など、最近の Flash 案件で良く使うようになってきた UI については実装していきたいなーと思っています。