JPPScrollbar

Just(ただ) Put(置けば) Play(動く) Scrollbar(スクロールバー)
サンプルファイルのライブラリからステージに置けば動いてくれるActionScript3.0製のスクロールバーです。
個人的に作っていましたが、割と高機能になったので公開します。

  • 主な機能
    • 任意のSpriteやMovieClipをスクロールバーのパーツとしてバインド可能です
    • 滑らかな減速スクロールを使用可能です
    • コンテンツ量に合わせて縮むスクロールバーを使用可能です
    • スライダーの高さを0ピクセルとして扱うことが可能です
    • iPhoneのような、スクロールが行き過ぎて戻る演出が使用可能です
    • エンドロールのような自動スクロールを実行可能です
    • 外部からメソッド呼び出しでスクロールさせることが可能です
    • スクロール量など、こと細かく決められます
    • スライダーやスクロール対象コンテンツを整数値に吸着できます
    • y座標でなくても、任意のプロパティをスクロール可能です
    • ライブラリからコピペしなくてもnewして使えます
    • SWFWheelを使用しているので大抵の環境でマウスホイールを使えます

サンプル

  • http://www.libspark.org/svn/as3/JPPScrollbar/trunk/samples 以下にあります。
    • samples/01 ・・・ コンテンツ量に合わせて伸縮するスライダーを使用した減速スクロールバー(デフォルト)
    • samples/02 ・・・ 減速スクロールを使わないスクロールバー
    • samples/03 ・・・ iPhoneっぽいスクロールとイベントの使用例 (matsumosさんに作成していただきました)
    • samples/04 ・・・ リキッドレイアウトに対応したスクロールバー
    • samples/05 ・・・ useIgnoreSliderHeight = true (スライダーの高さを0として扱う)の使いどころ → スライダーの基準点をスクロールエリアの上から下までめいっぱい動かしたいとき
    • samples/06 ・・・ 水平スクロールバーのサンプル
    • samples/07 ・・・ ASファイルだけで作ったサンプル (matsumosさんに作成していただきました)
    • samples/08 ・・・ Papervision3Dのテクスチャに組み込んだサンプル (matsumosさんに作成していただきました)
    • samples/09 ・・・ 外部テキストを読み込んでスクロールする
    • サンプル受付中!

ダウンロード

ソースコード + サンプル
http://www.libspark.org/svn/as3/JPPScrollbar/tags/1.07.zip

swc版
http://www.libspark.org/svn/as3/JPPScrollbar/trunk/bin/jppscrollbar1_07.swc

リポジトリ

http://www.libspark.org/svn/as3/JPPScrollbar

ASDoc

http://www.libspark.org/svn/as3/JPPScrollbar/trunk/docs/jppscrollbar/index.html

使い方

とりあえず使いたい人

1.クラスパスを通す

srcフォルダにクラスパスを通しておきます。

2.インスタンスを自分のライブラリに持ってくる

samplesフォルダにあるsampleXX.flaファイル(XXはサンプル番号)のライブラリにあるJPPScrollbarKitFolderフォルダごと、
使用したいflaファイルのライブラリにコピー&ペーストします。
JPPScrollbarKitFolderフォルダ内のJPPScrollbarKitシンボルをステージに置いておきます。

3.JPPScrollbarKit.asを持ってくる

手順2で、例えばsamples/01/内のsample01.flaのシンボルを持ってきていれば、
samples/01/にあるJPPScrollbarKit.asを自分のflaファイルがあるフォルダへコピー&ペーストします。

4.動作確認する

パブリッシュしてうまくいけばOK。

5.コンテンツとかパーツを変更する

目的に合わせてボタンやスクロール対象のコンテンツを編集してください。
スクロールバー動作に関するオプション設定はJPPScrollbarKit.as内にコメントアウトしてあるので簡単に設定可能です。

new JPPScrollbar(); して使いたい人

サンプルからコピペしないで使いたい人は、
各サンプルフォルダにあるJPPScrollbarKit.as中の処理の流れを見ていただければだいたい分かると思います。

JustPutしてもPlayしない場合の対処法

「1151: 定義 arrowUp (名前空間 internal) にコンフリクトが存在します。」などのコンパイルエラーが出た場合

あなたのflaファイルで、パブリッシュ設定>Flash>ActionScript 3.0 設定>ステージのインスタンスを自動宣言にチェックが入っている可能性があります。 チェックを外すか(flaファイルに関連する他のクラスに影響する場合があります)、 またはJPPScrollbarKit.asの「STAGE INSTANCES」の項(33行目から)のインスタンス宣言を全てコメントアウトしてください。

更新履歴

2011.10.14 バージョン1.07リリース

2010.09.17 バージョン1.06リリース

2010.09.17 バージョン1.06 Previewリリース

  • マウスホイール検出エリア(mouseWheelArea)を指定できるようにしました。
  • destroyメソッド内の無駄な処理を最適化しました。
  • useSWFWheelによりSWFWheelの使用/不使用を設定できるように変更しました。

2010.08.02 バージョン1.05 Previewリリース

  • 初期化フラグ(isReady)のgetterを追加しました。
  • 破棄メソッド(destroy)を追加しました。
  • sliderを無効化するときに自動的にstopDragするように挙動を修正しました。
  • 旧バージョン1.04は以下からダウンロード可能です。

2010.07.04 バージョン1.04リリース

  • MagicMouseを使用している場合、予期せぬタイミングでe.delta=0のMouseEvent.MOUSE_WHEELイベントが発生するという報告を受けました。このときJPPScrollbarの挙動がおかしくなる問題を修正しました。1.03以前のバージョンを継続して使われている方は以下の修正を適用することで手動で問題を回避することが可能です。

JPPScrollbar.asの2145行目(バージョン1.03)、もしくは2101行目(バージョン1.02)辺り

修正前

private function _mouseWheelHandler(e:MouseEvent):void {
    if (!_isReady || !_useMouseWheel) return;
    ・・・
}

修正後(e.deltaが0の場合にメソッドを抜ける処理を追加します)

private function _mouseWheelHandler(e:MouseEvent):void {
    if (!_isReady || !_useMouseWheel || e.delta == 0) return;
    ・・・
}

2010.05.12 バージョン1.03リリース

  • これまでJPPScrollbarクラスはSpriteを継承していましたが、表示リストと分離することでより使い勝手を良くするため、EventDispatcherの継承へと変更となりました。この変更により、これまでJPPScrollbarクラスのインスタンスをaddChildすることでstageの参照を渡していましたが、JPPScrollbarクラスのコンストラクタもしくはstageプロパティでstageの参照を渡すことになります。stageの参照を渡していない場合は正常に動作しませんのでご注意ください。実際のコードは各サンプルファイルをご覧ください。
  • JPPScrollbarクラス、JPPScrollbarEventクラスのパッケージがそれぞれnet.alumican.as3.ui.justputplay.scrollbars.JPPScrollbar、net.alumican.as3.ui.justputplay.events.JPPScrollbarEventへ変更となりました。
  • 旧バージョン1.02は以下からダウンロード可能です。

ご意見・ご感想など

ライセンス

Licensed under the MIT License

Copyright (c) 2008 BeInteractive! (www.be-interactive.org) and Spark project (www.libspark.org)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

作ってる人