[PageFlip]ボタンによるめくり処理試し(AS3)
May 20, 2008
『PageFlipクラス(AS3)の基本的な使い方、ついでにFlex 3 SDK』のつづき。
サンプルソース
(サンプルソースを試すには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.currentPagecurrentPageは見開きの左ページの番号になる。つまり、表紙を表示しているときは-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
カテゴリー:
タグ:
Trackback
Trackback URL for this entry:


















