2010年04月25日

ホイイィィィィイル!!!

マウスホイールによるピアノロールのスクロールをほぼ完璧に実装しました!!
当初の予定通りjavax.swing.JScrollPaneを使って実装しました。
Swingらしい実装になって一安心です(笑)

マウスホイールの実装をどうやって回避したのかと言うと――

まず、ホイールリスナー
class MouseWheelHandler implements MouseWheelListener
{
    public void mouseWheelMoved(MouseWheelEvent e)
    {
        if(scrlPane.isWheelScrollingEnabled())
        {
            if(scrlPane.getVerticalScrollBar().isVisible())
            {
                scroll(scrlPane.getVerticalScrollBar(), e);
            }
            else if(scrlPane.getHorizontalScrollBar().isVisible())
            {
                scroll(scrlPane.getHorizontalScrollBar(), e);
            }
        }
    }

    private void scroll(final JScrollBar sb, final MouseWheelEvent e)
    {
        int totalAmount = 0;
        if(e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL)
        {
            totalAmount = (int)(12 * zoomHeight * 3) * e.getWheelRotation();
        }
        else if(e.getScrollType() == MouseWheelEvent.WHEEL_BLOCK_SCROLL)
        {
            // マウスホイールによるブロックスクロールは未確認
            totalAmount = e.getWheelRotation() * sb.getBlockIncrement(e.getWheelRotation());
        }
        sb.setValue(sb.getValue() + totalAmount);
    }
}
次にリスナーの登録
MouseWheelListener[] mouseWheelListeners = scrlPane.getMouseWheelListeners();
for(int i = 0; i < mouseWheelListeners.length; ++i)
{
    scrlPane.removeMouseWheelListener(mouseWheelListeners[i]);
}
scrlPane.addMouseWheelListener(new MouseWheelHandler());
これだけです。
マウスイベントってコンポーネントを突き抜けてコンテナまで届くんですね。
ちょっちびびりました。
このコードを書くためにsrc.zipを探りまくった(笑)
最終的にホイールリスナーを登録してるのはjavax.swing.plaf.basic.BasicScrollPaneUIでした。
メソッドはpublic void installUI(JComponent x)経由でprotected void installListeners(JScrollPane c)が呼び出され、そこで入れ子クラスのprotected class BasicScrollPaneUI.MouseWheelHandlerをリスナーとして登録してました。
javax.swing.JScrollPaneで迷ってる人は要確認ですヨ!!

ただし、キー入力によるスクロールはまた別の話ですので、要研究です。
キー入力によるスクロールに問題があるんだけどなぁ・・
ナンデモナーイ!!キニシナーイ!!微々たることだからもういいのー!!

お次はピアノロールを可変にしないとですねー。

2010年04月23日

さらい屋 五葉

久しぶりすぎてごめんなさい。
書くことが特になくて・・

ってわけで、初めてさらい屋 五葉ってアニメを観ましたー。
またもノイタミナですね。もうね、ノイタミナ大好きっ!
え?四畳半神話大系?テンポ早くてどうにも・・

4月から1時間枠になったんですねー。
知らなかった。
先週は30分だったし、「ん?どゆこと?」って感じでした。
週交替なのかなとか思ってました。
でも、ノイタミナの公式には「祝!1時間枠」みたいなこと書いてあるし・・
今週から1時間枠なんですねぇ。ふふん。

実は先週は観なかったんです。
観れなかったと言うか・・

で、2話→1話の順で観ました。
2話はオンエアで、1話は動画共有サイトで。

3月に本屋にいったときに平置きで「4月からアニメ放送開始!!」みたいな特集がされてたんです。
「ふーん、どんなんだろ?絵が特徴あるなぁ・・・気になるけど様子見かなー」
なーんて思ってスルーしました。
そしたら!!おもしろいじゃないですか!!これ!!

スルスルズルズルしてて一気に引き込まれました。
ハガレンの既刊分を全部買ったら、買っちゃうかも(笑)

2010年04月04日

合わせて10.5

ライバルが売ってたので買ってきましたー!
なんか、本ばっか買ってる(笑)

今月号はやばいです。
5月号なんですけど、おまけに5.5月号がついてきます。
マンガ雑誌の付録がマンガ雑誌って画期的すぎる(笑)

一応、先月号から「来月のライバルは2冊!!」みたいな宣伝はされてたんです。
でも「小冊子みたいなもんかなー」とか「1号分を2冊に割るのかなー」って思ってました。

そしたら!!
ちっがいますよ!!

5月号と5.5月号合わせて1344ページってもう!あんた!!
5月号が800ページくらい、5.5月号が500ページくらいです。

創刊時もそうでしたけど、この雑誌太っ腹すぎです。大盤振る舞いじゃ!!

今日明日で読みきろうと思いますー。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。