AS3aboutmemo.393個人的メモです。間違いなどありましたらご指摘ください。データは破損しているため、境界外の読み取りが試行されました。Comment|****2012.10.11追記*****FlashBuilder4.7Beta2では下記のエラーはでなくなった模様ただ自分のボタンシンボルを含んだサンプルをパブリッシュしたら、レイアウトが盛大に崩壊したりしていて、なんか挙動がとても怪しい気がする・・・(具体的にどういうときに崩れるかはちゃんと検証してない)****************************FlashBuilder4.7では新しいASコンパイラが搭載されているので、過去に作ったプロジェクトを書き出そうとエラーがでることがあります。データは破損しているため、境界外の読み取りが試行されました。symbol.[※hogehoge]の内容はいろいろ変わるこれは、FlashIDE上で作ったアセット的なSWCファイルからリンケージしたボタンシンボル(SimpleButton)を読み込もうとすると発生するエラーみたい。リンケージしたムービークリップシンボルの中にボタンシンボルが含まれててもダメ。リンケージしたボタンシンボルを呼ぼうとすると、上記:その1のエラーがでてボタンシンボルを含むリンケージしたムービークリップシンボルを呼ぼうとすると、その2のエラーがでました。今再現確認してみたところ、リンケージしたムービークリップシンボルの中にボタンシンボルが含まれてる場合はエラーでなくなった・・・なんでだろう。そのムービークリップを表示してみると、含まれてるはずのボタンシンボルがひとつも表示されないのでやっぱり何かおかしいみたい。FlashBuilder4.7で使うアセットSWCにはボタンシンボルは使わないほうがいいみたい。iOSでシンプルな3Dゲームをリリースしました。Comments|メモ記事を書いてましたが先週やっとiPhoneアプリとしてリリースしました。iOS(AIR3.3SDK)で作ってみたよ。3DエンジンにはAlternativa3D(8.17.0)を使用したよ。苦戦したことは以前公開したStage3D勉強会#2の資料に書いたので興味ある方は読んでみてください。上昇気流だけを取り続けて飛ばれるとゲームオーバーになりにくいが緊張感なくなりゲームが単調になる追い風も取らせて緊張感のあるゲーム展開にしたい→上昇気流だけを取りつづけた場合は無理ゲーになるような設定に。(風車の背がどんどん伸びていく)→2種類のコンボ要素の追加(コンボを続けると風車の背が伸びにくくなるようにしている)※「上昇気流を取る→風車がのびる」という部分がルール的には判りにくくなってしまったのでヒントの項目に記載したけど理解できてない人も多いかも。▼操作性についてiPhoneアプリというと傾きセンサーだけど今回は無しで。プレイヤーが学習してやりこみ性あるゲームにしたかった。傾きセンサーでは細かいコントロールができないので運要素が増えてしまう個人的に思うようにコントロールできないのは嫌い、というのが一番の理由あと電車でプレイしてる姿も少し恥かしくなるしね。8月中は無料で9月から170円になりますので是非試してみてくださいまし。※Flash製なので簡単にWEBおためしプレイ版も用意できますよ。iOS(AIR3.3SDK)でスクリーンショットを撮るお話。ありそうでなかった、というかあったけどもうまく動かなかったので作ってみたらちょっとハマりました。タイトルどおりのaneのコードが公開されてました。ScreenShotが、実装してみても想定通りに動作しない。Objective-C部分のコードを見てみると、UIGetScreenImage()というapple非公開APIを使用してる。非公開APIを使うとリジェクト対象だそうでこれは使えないと。下の記事を参考にスタンダードな実装に変更してみる。iPhoneアプリから画面のキャプチャー画像を取得する2つの方法aneファイルをビルドしなおして再テスト。画像はカメラロールに保存されたのは真っ白の画像。ちなみにObjective-CでiOSプロジェクトを作って、Xib上に適当にボタンとか画像とか配置した状態で上記の方法を実行すればスクリーンショットは問題なく取れるから根本的に間違ってるわけではなさげ。肝はFlashの描画領域がどこにあるのか、ということ。renderInContext:UIGraphicsGetCurrentContext()];UIWindowのkeyWindowのレイヤーをキャプチャしてるのだからFlashで言えばStage上のメインタイムラインをキャプチャしてるようなものなはずだから良さげな感じだけども結果は前述したとおりに真っ白。上記の方法は使えないみたい。app.xmlでのrenderMode要素をdirectを指定する場合はObjective-C側ではOpenGLESでのスクリーンショットを撮るような処理をしないといけないっぽい。具体的なコードはここに書かれてるものを参考にしました。imageこのコードで取得したUIImageをキャプチャすることでとスクリーンショットを撮ることができました。renderModeをcpu指定にすれば最初のコードでもスクリーンショットは撮れるのではないか?と思いましたが結果は否。renderMode:cpuでは、上述のどちらのコードでもスクリーンショットを撮ることはできませんでした。renderModeをcpuにする理由なんてない気もするのでまぁいいか。各コードの詳細はQuiitaにあげてあります。iOSでスクリーンショットをカメラロールに保存するANEを作ってみたけど真っ白な画面しか取れない(コメント欄で自己解決してます)p.s.ちなみに今回スクリーンショットを撮るのが最終目的ではなく、iOS5からのネイティブなTwitterAPIを使ってのスクリーンショットつきのTweet機能を実装したかったのでした。これも無事にうまく実装できたので、また後で記事を書きます。Comment|以前作ったもの。ネットで検索できるようにメモ。Comments|前の記事の続き、FlashBuilder4.5のActionScriptモバイルプロジェクトでの設定のお話。これでデバッグプレビューすると確かに横向きでプレビューされる。stage.stageWidthは320、stage.stageHeightは480と変更されていない。//出力:480,320解せないのが、なぜPORTRAITなのか。通常はPORTRAITは縦、LANDSCAPEは横をあらわすので、stage.setAspectRatio(StageAspectRatio.LANDSCAPE);と設定すればいいと思ったのだけど、これだとstage.stageWidthは320、stage.stageHeightは480のままとなった。//出力:320,480解せぬ。上記設定だと実機転送した際に横方向にはならない様子。setAspectRatio()にはStageAspectRatio.LANDSCAPEを設定しないと横向き固定にはなりませんでした。//出力:320,480となっているようで実機起動上では特に問題なさげ。ステージサイズがちゃんと取れないのはデバッグプレビューだけでのバグってことなのか!?※2011.8.18追記コメント欄にて教えていただきました。stage.setOrientation(StageOrientation.DEFAULT)を設定することで想定したstageサイズを取得することができました。Comments|だいぶはまってネットに情報が見当たらなかったのでメモ。FlashBuilder4.5でiPhone、Androind等のアプリを作るため、以下2つのプロジェクトが用意されました。FlexモバイルプロジェクトActionScriptモバイルプロジェクト1.はMXMLベースのプロジェクトで2はASだけで作れるプロジェクト。ボクはMXMLはさっぱりなのでASだけで作れる2.を選択。普通のFlashコンテンツを作ると同様にドキュメントクラスからゴリゴリ書いていけばOKですが、iOS用の書き出しをした際にステージサイズの参照値おかしなことになりました。375なんぞこれ、と思えどステージサイズの設定する箇所は見当たらず。480)を入れてみるも変化無し。ドキュメントクラスにSWFのembedタグを書いてみるも変化無し。FlashBuilderのHelpを観てみるとこんなページに行き着きました。http://www.randytroppmann.com/2011/04/12/pure-as3-workflow-with-flex-builder-4-5/そこに書かれていた見慣れぬ1行を追加してみると。StageDisplayState.FULL_SCREEN_INTERACTIVE;これを入れることでstage.stageWidth,stageHeightが想定通りの値となりました。(シミュレートデバイスを変えることにより値も変化する)とりあえず、よくわからんけど、上記一行は必須らしい。P.S.Retina対応もできるらしいけど、3G/3GSとRetinaの混合設定がよくわからん。highを書くだけで、Objective-Cみたいに自動でいい感じに変換してくれるのか、それとも2種類の画角を分けて作らないのいけないのか。Retinaの実機がないから検証できんのよね。読み込みが未完了です。Comment|ProgressionでPreloader.asからindex.swfを読み込むときにこんなエラーダイアログに悩まされてました。いうときにこのエラーになるかというと、Preloader.swfがindex.swfの読みこみが終わらないうちに、ブラウザを閉じてしまうとこうなります。index.swfが重い場合、「ローディング長いからもう観なくていいや」ってブラウザ落とすと上記ダイアログで固まるんですね。最高にうざい状態です。エラーとしては、IOErrorってわかってるので、そこのエラー処理を書いてあげればいいんですけど、読み込みの処理はPreloader.asの親クラスに書いてあるので、どのオブジェクトに対して、IOErrorのハンドリングをすればいいのかわからなかったのですが、ついに重い腰をあげて親クラスの中身を覗いてみたら、5分で解決したというオチです。結論としては、こんな感じ。);}Preloader.asのatReady()の中で、thisに対してIOErrorのハンドリングを書けばOKです。thisに書くかといえば、Preloader.asの親クラス、CastPreloader.asの中にこの一行があるので。);//_loaderはindex.swfを読むためのものリスナー関数でsuper.dispatchEventを飛ばしてるから、Preloader.asのthisでイベントを取れるようです。);という感じで書いてみると、一応traceは出力されるんですけども、traceの前に最初のエラーが表示されてしまい、まったく意味がないことになりました。contentLoaderInfoではなく、素直にthisでIOErrorEventをハンドリングすればOK。Comment|はまったのでメモメモ。FlashをHTMLでの領域を指定できる便利ライブラリSWFSize。Progressionにも採用されてて単体で使うケースがあんまりなかったのだけど、単体で使ったらIE6だけでエラーになった。具体的には最低サイズ以下(resizeが機能したとき)になるとブラウザが固まる。なんだこりゃとググってみると開発者のHIGEさんからのコメントが。ググるとボクのケースでの原因と一致する記事を発見。Systems具体的にはDTDがonresizeに対応していなかったということ。Transitional//EN"><!--"http://www.w3.org/TR/html4/loose.dtd"を削除-->普段DOCTYPE宣言とか意味もよくわからず呪文のように書いてる(正確にはコピペ...)からこういうところよくわからんです。Comment|ちょっとはまったので検索用のメモFlashIDEを使わずにFlexSDK(FlashDevelop)で製作中に、Flashのコンポーネント(具体的にはComboBox)が使いたいと。FlashDevelopにはコンポーネントのライブラリが入ってない。どっかにないかなと探すとfl.swcってやつが見つかった。DownloadsDLして、プロジェクトにライブラリパスを通すとコンポーネント系のコード補完がでるようになってインスタンス化することもできるようになった。addChidすると以下のようなエラーがでる。以外でなければなりません。fl.core::UIComponent/callLaterDispatcher()たぶんコードはあるけど、アセット的なグラフィックデータが用意されてないんじゃないかなぁ、と。ランタイムエラーかつ、妙な時間差で発生するので、何が悪いかわからなくてちょっとはまってしまった。対策としては、FlashIDEからあらかじめComboBoxクラスを埋め込みアセットクラスでswcとかにして書き出しておき、それを使えばaddChildしてもエラーにならずに使うことができるよ、と。コンポーネント一式を含んだオレオレswcを用意しておいてもいいかもね。Flash[Event][AS]スクリーンセーバー作りました。15で発表してきたお話をメモ。本題は、スクリーンセーバーDL用の特設サイト作りましたよってお話。Re-BUILD////////////////////////////////////////////////////////////////////////////まず最初からスクリーンセーバーを作ろうと思ったわけじゃなくって。以前から考えてたネタをワンダフル用に作ってたら、アレもコレもとだんだんと手がこんできたので、これスクリーンセーバーにすればいいんじゃね、と。SWFをスクリーンセーバーにするにはどうすりゃいいの?ってことで調べてみました。ググって以下の二つが見つかりました。1)InstantStorm:winのみ2)fla:ver:win/mac1)は完全無料でいろいろかゆいとこに手が届くような感じだけどmac用は不可とりあえずwin用にはこっちを使いました。2)はwin/macどちらも対応で、低機能の無料版と高機能の有料版があるんだけど無料版ではOSX10.6用(64bit版)の対応はできない、と。win用/mac用で個々にライセンスが分かれていて各ライセンスが19,800円win/mac、まとめて買うと34,800円。mac用にはこっちの有料版を使いました。・・・えぇ、mac用のライセンス買いましたよ。////////////////////////////////////////////////////////////////////////////あと製作に関する裏話的なこと。数年前にみた海外のサイト(たぶん製作会社だったと思う。)で、地平線がみえるようなシンプルなランドスケープなデザインに、ランダムに家がでてきてスクロールして流れていくようなやつをみたときに、こういうの作ってみたいなーと思ってたのが最初。(当のサイトはググっても見つけられず。思い出補正でぜんぜん違うものかも。Guitarこれ、好きなんです。GRV2196を思い出した人もいるかもGRV2196これ、好きなんです。++++++++++++++++++++++++++++++++++++++++++++GRV2196はyoutubeになかったけどGRV2126を発見。これは観てなかったのだけど、トラックの形とかそっくりだったw(トラックは軽トラの側面画像を適当にトレースしてたんだけどね)////////////////////////////////////////////////////////////////////////////元になるソースはwonderflにアップしてあります。外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。外部SWFファイルの読み込みで、子swf側で動的に配置したmcが表示されない。memo.393about。