[PageFlip]ボタンによるめくり処理試し(AS3)

May 20, 2008

『PageFlipクラス(AS3)の基本的な使い方、ついでにFlex 3 SDK』のつづき。

[demoページ]

サンプルソース
(サンプルソースを試すにはTweenerが必要です)

前回のエントリーに追加した主な機能
トゥイーンで本を表示
ボタンでのページめくり
ページ数の表示


以下はサンプルソースの補足説明です。

トゥイーンで本を表示する
1.<mx:Application>にcreationCompleteイベントを追加
creationComplete イベントは、アプリケーションの開始時に Application フォームとその子が初期化された後で発生します。(『Adobe - Flexクイックスタート基礎:イベントの処理』より

<mx:Application
	(省略)
	creationComplete = "init()" >

2.ActionScriptブロックを追加

<mx:Script>
<![CDATA[
//ActionScriptを記述
]]>
</mx:Script>

3.ActionScriptブロック内に本のトゥイーン処理を追加

import caurina.transitions.*;
private function init():void
{
myBook.x = Application.application.width;
var targetX:int = Math.round(Application.application.width/2-200);
Tweener.addTween(myBook,{x:targetX,time:2});
}

4.画面の外からmyBookをトゥイーンさせる場合、横スクロールが表示されるので<mx:Application>のhorizontalScrollPolicyプロパティをOffにする

horizontalScrollPolicy="off"


ボタンでのページめくりを行う
1.前に戻るボタン(prev)、次に進むボタン(next)を追加

<mx:Button id="prevBtn" label="prev" x="{Math.round(Application.application.width/2-(prevBtn.width+nextBtn.width)/2)}" y="{myBook.y+myBook.height+5}" click="gotoPagePrev()"></mx:Button>
<mx:Button id="nextBtn" label="next" x="{prevBtn.x+prevBtn.width+5}" y="{myBook.y+myBook.height+5}" click="gotoPageNext()"></mx:Button>

2.clickイベントに対応するイベントハンドラメソッドをActionScriptブロック内に追加
gotoPagePrev()メソッド、gotoPageNext()メソッドの中でBookクラスのgotoPageメソッドを実行する。

myBook.gotoPage(next);

nextにはめくった先のページを指定する。
たとえばmyBook.gotoPage(0)とすると表紙ページが開く。
myBook.gotoPage(1)またはmyBook.gotoPage(2)はどちらも表紙の次の見開きページを開くので、ページの加算・減算の基本は2ページ単位になる。


ページ数の表示を行う
1.現在表示中のページ数はcurrentPageプロパティを使う

myBook.currentPage

currentPageは見開きの左ページの番号になる。つまり、表紙を表示しているときは-1、次のページのときは1、そのあと3、5と続く。

2.前に戻る、次へ進むボタン処理以外のめくり処理完了時にもページ数を変える
ページめくり完了判定には、pageTurnedイベントを使う。

<rs:Book
(省略)
pageTurned="pageflipTurnedHandler(event);">

private function pageflipTurnedHandler(event:BookEvent):void
{
	page.text = convertPage(myBook.currentPage);
}


おまけ(制作過程で解決した疑問やエラー、エラー原因)
a.xプロパティなどで数式を指定したいときは{}で囲む
囲まないと次のエラーが出る。

Error: Initializer for 'x': cannot parse value of type Number from text 'Math.round(Application.application.width/2-(prevBtn.width+page.width+nextBtn.width)/2)'.

b.リサイズ時の対応は不要
<rs:Book>のxプロパティ、yプロパティで指定した値(垂直、水平方向の中央)に自動で位置調整される。

c.Flex 3 SDKで日本語コメント使うとエラーになる
日本語コメント使った行の前の終了タグで次のエラーが出る。

Error: Unexpected end of token stream. The last token was: <mx:Application>.

d.終了タグに余計なスペースが入ったときのエラー(例 </ mx:Button>)

Error: The element type 'mx:Button' must be terminated by the matching end-tag '</mx:Button>'.

e.import忘れ
importされてないです、とエラーで言ってくれたらもっといいんだけど。

Error: 未定義のプロパティ Tweener へのアクセスです。


参考
Adobe® Flex™ 3 リファレンスガイド
All Packages - Book documentation
Adobe - MXML と ActionScript を使用したコード記述
第5回 Flexが備えるMXMLコンポーネント(Part2:ボタン,チェックボックス,ラジオボタン):ITpro

カテゴリー: 


タグ: 


Posted by scratchbrain at May 20, 2008 1:09 AM ブックマークに追加する

Trackback

Trackback URL for this entry:

Post a Comment


検索

このブログを検索

サイトコンセプト

レディオヘッド、Flash・ActionScript 3.0、Processing、アートに関すること。日記・雑感、読書感想など。
[SCRATCHBRAIN.NET ホーム]
[SCRATCHBRAIN プロフィール]
[お問い合わせ]
[Twitter]

リンク

  • 嫁と更新。レシピ、子育て
  • バルセロナ観光ガイド
  • ポケット・アナリシス
  • 洋楽ブックマーク
  • こんなライヴに行きました

広告

おすすめ

最近のエントリー

カテゴリー

タグクラウド

全てのエントリー一覧

RSSフィード

月別アーカイブ

powered by Movable Type

hosted by

あわせて読みたいブログパーツ