2011年の抱負を語ってから連続でAS3の話で恐縮ですが、、、毎度困ってる重複しないランダムのClassをメモします。 重複しないランダムは何かと便利です。その数を引っ張り出すのに、毎回関数で数字を生成するのはナンセンス。なので、一回のメソッドでほしい数分が格納された配列を作る。そんなClassを作りました。 ActionScript3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 package { public class RandomNonOverlapping { //↓この配列に重複しないランダムの数字が入ります。 public var ary= new Array(); public var max:uint = new uint(); public var Need:uint = new uint();//必要な個数 public function RandomNonOverlapping(m,n) { init(m,n); } public function init(m,n):Array { var max:uint = m; var Need:uint = n; var int_a = new Array(); var int_b = new Array(); //0~maxの数字を全部配列に入れる for (var i:int=0; i<= max; i++) { int_a[i] = i;<br /> } var j:Number = 0; var a_length:Number = int_a.

続きを読む

※追記 最新のダウンロードできる場所はここです https://github.com/mrdoob/Hi-ReS-Stats AS3用のFPSとメモリーの使用量がわかる、Stats.asというのがあります。左上のグラフみたいなやつですね。めちゃくちゃ便利なんですが、PC移行の際にバックアップをとるのを忘れ、再度ダウンロードしにいったんですが、なんと!ソースがなくなってる?じゃないですか! http://code.google.com/p/mrdoob/wiki/stats ↑だいたいここに飛ばされるんですがなくなってるみたいですよね。 あれば便利なんで、、、何とかしてみつけたいなぁーっと思い、探しに探したら見つかりました! Stats.asがダウンロードできる場所はここ http://code.google.com/p/mrdoob/source/browse/trunk/libs/net/hires/utils/?r=109 ↑Stats.asを右クリックで、名前をつけて保存。で保存してください。 簡単な使い方 Stats.asをひらくと、「package net.hires.debug」となってます。ドキュメントクラス、またはflaファイルがあるところに「net」フォルダ、その下に「hires」フォルダ、その下に「debug」フォルダを作ってその中にStats.asを置いてください。 ActionScriptに下記のコードを書きます。(古いコードです) ActionScript3 1 2 import net.hires.debugStats; addChild(new Stats()); 追記 どうやらimportのパスが、変更になったみたいです。通りすがりのStarlingさんからご指摘いただきました。ありがとうございました!(^^) ActionScript3 1 2 import net.hires.utils; addChild(new Stats());

続きを読む

Twitterの検索APIで、主に使われるのはハッシュタグで検索したつぶやきを使うときだと思います。たとえば、「#CS5_jp」のハッシュタグを検索APIで取得したいとします。 ATOM形式:http://search.twitter.com/search.atom?q=%23CS5_jp JSON形式:http://search.twitter.com/search.json?q=%23CS5_jp まぁFlashなんで、わざわざjsonじゃなくてatomでいいやー!と思いきや、ATOM形式はXMLを扱うように、ActionScriptでパースすることができませんでした。 ATOM形式はRSSリーダーに登録できるように設計されているもので、XML文章フォーマットでありながら閉じタグが省略されているのが、ActionScriptでうまくパースできない原因でした。ここで使うのがAS3のNamespaceクラスです。XMLをloadしたあと、格納された変数にnode名を入力してパースしていくと思います。その、noed名の手前に、このNamespaceを入力していく必要があるみたいです。Twitterの出力結果を見てみましょう。 xml 1 <feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="<b>http://www.w3.org/2005/Atom</b>" xmlns:twitter="http://api.twitter.com/"> feedの要素の中に、Namespaceが記述されています。「http://www.w3.org/2005/Atom」というのがNamespaceにあたる内容です。 ActionScript3 1 var ns:Namespace = new Namespace("http://www.w3.org/2005/Atom"); 変数「ns」にNamespaceを格納します。 ActionScript3 1 trace(xml.ns::entry[0].ns::title); パースしたい箇所の「ns::」を記述することで、Namespaceが適応され、つぶやきの内容を出力することができます。 まとめるとこんなかんじです。 ActionScript3 1

続きを読む

Flashコンテンツを更新する時に、アプリをわざわざ立ち上げずに外部にXMLファイルやテキストファイルを更新する方法とかが一般的だと思いますが、要素が増えていくと管理自体が大変だったり、データを作るのが大変だったりします。そこで考えたのが、Excleなどで入稿データを管理し、CSVファイルに書き出したものをFlashが読み込むことができないものか。調べてみると方法がありましたのでメモります。ActionScript3.0でCSVファイルを読み込む方法です。 文字コードに気をつけましょう! ExcelからCSVに書き出したファイルは、おそらくShift-JISに文字コードがなっていると思います。書き出したCSVファイルを、文字コードが変更できるテキストエディタで保存しなおすのは、ちょっとだけナンセンスなんで、下記のサンプルコードには文字コードをUTF-8に変換するJcodeライブラリを使わせていただきます。よっぽどのことがない限りないと思いますが、これでCSVファイルの文字コードがEUCの場合でも変更できます。 もし、余計なライブラリを読み込みたくないー!場合は、 System.useCodePage を true にしましょう。 Jcode.asはここからダウンロードできます。 http://web2memo.blog120.fc2.com/blog-entry-221.html ActionScript3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

続きを読む

ActionScriptのトゥイーン制御ライブラリTweenerの使い方の補足です。 ぼかし、ブラーをTweenさせようと思ってもエラーが出る。 ## [Tweener] Error: The property '_Blur_blurX' doesn't seem to be a normal object property of [object MovieClip] or a registered special property. ## [Tweener] Error: The property '_Blur_blurY' doesn't seem to be a normal object property of [object MovieClip] or a registered special property. Tweenerライブラリを読み込む「import caurina.transitions.Tweener;」この記述の下に、ぼかしフィルターを適応させるライブラリをimportさせる記述書いて、初期化をする関数を実行させる必要があります。 ActionScript 1 2 3 4 5 6 7 8 9 // ぼかしフィルターのimport import caurina.transitions.properties.FilterShortcuts; // ぼかしフィルターの初期化 FilterShortcuts.

続きを読む

外部テキストファイルやCSV、XMLファイルをFlashに読み込んで表示する。そんなコンテンツはいっぱいあると思いますが、shift-jisの場合は日本語が正しく表示されないので「System.useCodepage」というおまじないを書きます。 1119: 未定義である可能性が高いプロパティ useCodepage に静的型 Class の参照を使用してアクセスしています。 ActionScript3.0でこんなエラーが出たら、「page」の「p」を大文字に変えてみてください。たったこれだけではまってしまいました。。orz ActionScript3 1 2 //as3 System.useCodePage = true; ActionScript3 1 2 //as2以下 System.useCodepage = true;

続きを読む

今度は久々にFlashに関して AS2までは、入れ子になったMovieClipから一番上にあたる _root に対して、そこのタイムラインに書かれているScriptの関数を叩く際には、 _root.hoge(); と書けば、 function hoge(){} 関数が実行できました。 AS3になって、XもYもrootもアンダーバー _ をつけなくなり、入れ子になったMovieClipからアンダーバーのない root.hoge(); で関数を実行できるのかとおもったっら違うみたいでした。。。今更感がいなめないですが、、メモします。 ActionScript3 1 MovieClip(root).hoge(); ActionScript3.0の場合は、このように書くとhoge関数が実行できました。rootも1つのMovieClipですよー!っていうことですね。もう忘れないw 補足 この方法でアクセスできなかったパターンがありました。 TypeError: Error #1034: 強制型変換に失敗しました。flash.display::Stage@4e9df99 を flash.display.MovieClip に変換できません。 このようなエラーが出てしまい、タイムラインに書いている関数にアクセスすることができませんでした。条件は下記のとおり。 1. リンケージでクラスを作ってmyMcにする。 1. new myMc();をstage.addChild();する。 1. 作ったクラスの再生途中でMovieClip(root).hoge();関数が実行できない。 ActionScript3 1 2 3 4 5 6 var mc:MovieClip = new myMc(); stage.addChild(mc); // myMcの中にある関数でここを実行 function hoge():void{ trace("ほげ"); } 原因は、addChildする場所に問題があるみたいです。この例ではstageに対してaddChild();していますが、メインのタイムラインに書いてある関数はrootに対してアクセスすることができるので、stageはMovieClipに変換できません。というアラーとっぽいです。rootはタイムラインを含むでっかいMovieClipなので、リンケージで設定したクラスに書かれている関数でメインのタイムラインに書いているfunctionにアクセスしようとするには、newしたクラスのMovieClipはMovie(root)にaddChildしてあげなければなりません。

続きを読む

プロフィール画像

こたぽん

ビールと生ハムが好き

フロントエンドエンジニア

Tokyo