ActionScript 誰かが物凄い勢いで解答するスレ28
1 :
Now_loading...774KB :
2011/04/15(金) 10:46:11.63 ID:q4Uw1coA
誘導できなくなんだろ
前スレ
>>997 当然できるよ
Eventクラス(自分でEventクラス継承して作った場合はそのクラス)の変数として宣言してnewしとけは使い回せる
というか試してみようぜ…
3 :
前スレ999 :2011/04/15(金) 11:17:22.52 ID:/T0t7RHk
前スレ
>>998 1.0って2.0と結構違うんだっけ
2.0じゃダメな理由ある?(携帯とかPSPとか?)
パネルには1.0&2.0しかなかったからそれにしたから再現できてないかも
パブリッシュ設定は1.0
1.0よく覚えないんだけど
このbgmってSoundオブジェクト(1.0にあったっけ)であってる?
1.0でもvar bgm=new Sound()
の書き方でいい?
onSoundCompleteはflag_bgmが真の時に該当コードを通ると『bgmオブジェクトが再生し終わるたびに実行される関数』が登録されるからその後flag_bgmが変わろうがbgmオブジェクトが再生が終わるたびによびだされる
このイベントハンドラはまんま delete _root.bgm.onSoundComplete; で削除できたよ けど _root.bgm.onSoundComplete = function(){ if (flag_loop == true){ _root.bgm.start(); } }; にしたらflag切り替わるだけでループするかの設定はできるんじゃない? bgmたくさんあるなら配列(あったっけ)にいれたら制御しやすいんじゃない? flag=true; bgm[0].start;//ループする flag=false//bgm[0]があと一度再生し終わったら止まる bgm[1].start;//一回だけ再生 関数の書き方は function 関数名(bgm_title,flag_loop){ // ここにソースコピペ }; だね
6 :
Now_loading...774KB :2011/04/16(土) 16:03:38.61 ID:J+djHQ6s
ActionScriptで自動であらかじめ決めた絵を描きたいです。 イメージで言うと、グリコCMの最後のサウンドロゴが出てくる時の映像みたいな感じで、 絵を描きたいです。そういうのってどうすればいいんでしょうか? 1年くらい前からやりたいのですが、実装方法が全然わからず・・・ line関数でサインカーブを描いてみるところまではやったのですが、 人の似顔絵とか描こうとすると実装方法がわかりません;;
>>6 やったことないがヒントとしては、
ActionScript 3.0 SVG パス 描画
でググれば吉かも。
参考図書:
「ActionScript3.0ライブラリ入門」(新藤 愛大 ほか)翔泳社
pp076「描画リプレイ」
ここで人物像の鉛筆描画の再現が紹介されている。
どっかの記事で一度見たのですが 簡単に右上にメモリ使用量とfpsを表示してくれるライブラリって なんでしたっけ? いくら探しても見つからない・・・・
>>9 Statsでした。ありがとうございます。
使ってみてメモリがどんどん増えていってびっくりしたけど
これ仕様なんですね
11 :
Now_loading...774KB :2011/04/17(日) 21:53:12.21 ID:9BYqx84b
AS2→AS3移行に際してColorクラス代替としてColorTransformクラスを使いたいの
ですが記述方法が分かりません。
題材は
ttp://d.hatena.ne.jp/flashrod/20061108にある円グラフ描画で 、この
public class Chart extends Shape の下の部分にある graphics.beginFill(Color.darker(c));
をこのまま使うと
Warning: 1058: 移行の問題 : プロパティ Color はサポートされないようになりました。Color クラスは
削除されました。同等の機能の flash.geom.ColorTransform クラスを使用してください。
という警告が出ます。
このColor.darkerは陰の部分を担当していると思われます。どう変えたら良いでしょうか?
ヒントを願います。
適当な関数を作ってcを少し暗い色に変えた値を返せば良いよ。 色は16進数で赤緑青2桁ずつなんだけど それぞれ同じ割合で下げれば暗くなるよ。
13 :
11 :2011/04/17(日) 23:32:13.57 ID:9BYqx84b
14 :
前スレ998 :2011/04/18(月) 00:11:27.80 ID:MfNczaPK
>>4-5 遅れてすみません
仰る通りにしたらうまくできました!ありがとうございます
質問があります。 aaaaa bbbbb cccc という改行を含んだ文字列を変数に代入したいと思っています。 PHPの場合は $str=<<<END aaaaa bbbbb cccc END; と言うふうに書けば実現できます。 これをactionscript3.0ではどう書いていいのか分かりませんでした。 何方かご存知でしたら教えてください よろしくおねがいします
>>15 テキストからひっぱってくるならそのまま代入できるだろう
コード内で代入したいんなら\nなり\rなり\nなり\rなりいれりゃいんじゃね?
>>16 テキストファイルに書いておいてURLLoaderで読み込むということですよね?
それだと読み込むたびにHTTP通信のオーバーヘッドが発生するのが気になるんです
パッケージにテキストファイルを埋め込む事も調べた限りでは出来ないみたいだし
やっぱり改行を\nにするしかないのかな
18 :
Now_loading...774KB :2011/04/19(火) 02:13:34.94 ID:ECClfKLq
AS3,WinXP,FlashCS4 オーサリング環境で予め線描画で書いた閉じた図形(例えば、□とか☆)の 内部の色の塗りつぶしはどうしたら良いでしょうか? 例としては (MC:rect)□ →(赤)→ ■ (MC:star)☆ →(黒)→ ★ な感じです。
19 :
Now_loading...774KB :2011/04/19(火) 13:40:21.54 ID:Mi3k2rce
Adobe Flash5 pro AS3.0 外部swfを読み込み var loader_obj : Loader = new Loader(); 中略 stage.addChild(loader_obj); にて画面に表示するところまで出来てます Flashのサイズを300x300で書き出します、外部から読み込んだswfのサイズが400x300の場合 画面からはみだしてしまいます 画面ピッタリのサイズで表示したいのですが、どのようにしたらよいですか?
>>19 ずいぶん古いのつかってんだな
読み込んだswfのscaleXとかをごにょごにょすりゃいんじゃん?
AS3、FlexSDK3です。 マウスカーソルを動かす関数がありましたら教えてください。 初期カーソル位置をボタンの上に持ってきたりするのに使いたいです。
22 :
19 :2011/04/19(火) 14:04:29.49 ID:Mi3k2rce
>>20 ×Adobe Flash5 pro AS3.0
○Adobe Flash Pro CS5 AS3.0
間違いました、すみません
ありがとうございました
24 :
19 :2011/04/19(火) 15:54:29.44 ID:Mi3k2rce
Adobe Flash Pro CS5 AS3.0 先ほどの続きです scaleX、scaleYで設定出来るようになったのですが、 ステージにぴったりフィットするように元の大きさを取得後縮小率を計算して割り当てました その大きさをscaleXとscaleYに指定して表示させてみたところ、どうやら本当は表示されない画面外の部分が 縦幅、横幅のスタート地点と認識しているようで、縮尺は合っていますが余分な部分が見えています そのおかげで画面からはみだしています これの回避方法はありますか?
25 :
24 :2011/04/19(火) 16:06:14.84 ID:Mi3k2rce
自己解決しました 自分が間違ってました、すみませんでした
26 :
21 :2011/04/19(火) 16:41:27.82 ID:7KQaaaxc
>>23 はい、読み取り専用っぽいです。
SetCursorPos(100, 200)とか指定して動かせるといいのですが。
すいません。どなたか前スレ999分かりますか? XMLで任意の深さの要素の抜粋です。
hoge[-1]で配列の最後の要素にアクセスするように仕様変更することって可能ですか?
桁数非固定の数値がゾロ目かどうか判定するにはどうすればいいですか? zorome = false; if (hensu >= 10 && hensu <= 99 && hensu % 11 == 0){ zorome = true; } // 変数が2桁のとき(10〜99) if (hensu >= 100 && hensu <= 999 && hensu % 111 == 0){ zorome = true; } // 変数が3桁のとき(100〜999) if (hensu >= 1000 && hensu <= 9999 && hensu % 1111 == 0){ zorome = true; } // 変数が4桁のとき(1000〜9999) このようなものしか思いつきません できればAS1でも動くものでお願いします
>>29 それでいんじゃん?
文字列に変換して一文字ずつに分解して配列に入れてfor文で配列の長さ分全要素が最初の要素と等しかったら、とか
for文で10,100,1000で割った余りが一致するかとかあるだろうけど
ベースとなるキャンバスのサイズってどうやって取得するんですか? this.width, this.heightでは異なった値がはいってきました・・・
35 :
Now_loading...774KB :2011/04/20(水) 15:22:41.46 ID:nVXrMEHW
36 :
Now_loading...774KB :2011/04/20(水) 15:35:20.80 ID:Iz7mXNBI
permissions入っている?
38 :
35 :2011/04/20(水) 15:51:33.70 ID:nVXrMEHW
>>37 ありがとうございます、ちょっとやってみます
>>29 var zorome_max = 1111111111;//int 型が約21億までのため、10億の桁まで入力。
for(i = 1; i > zorome_max; i = i * 10 + i) if( hensu % i == 0 ) break;
if(i <= zorome_max) zorome = true;
訂正 var zorome_max:int = 1111111111;//int 型が約21億までのため、10億の桁まで入力。 for(i = 11; i > zorome_max; i = i * 10 + 1) if( hensu % i == 0 ) break; if(i <= zorome_max) zorome = true;
さらに訂正 var zorome_max:int = 1111111111;//int 型が約21億までのため、10億の桁まで入力。 for(i = 11; i > zorome_max; i = i * 10 + 1) if( hensu / 10 < i && hensu % i == 0 ) break; if(i <= zorome_max) zorome = true;
42 :
Now_loading...774KB :2011/04/20(水) 18:50:31.37 ID:qz+HpYlF
a
文字列操作でJavaの String.format("xxxx") みたいなことできる? String.format("%05d",hoge)で0揃えをしたいです。
>>43 replaceに目的に合った正規表現渡す…とかかな
45 :
35 :2011/04/20(水) 19:32:45.69 ID:nVXrMEHW
>>37 ダメでした
・そのまま動かしてもエラーでダメ
・エラーの内容からして、そのままコピペしてゴミとって動かしたところでダメな感じ、つまりは修正前提
・どうもphpに投げてない、phpでとにかくアクセスがあったらデータが有る無し関わらずサーバーでファイルを作るように修正したけど、そもそも投げてない
multipartじゃなく、データだけ投げる→サーバーphpで受ける→ファイル作るまでは出来てます
もっと簡単にmultipart/form-data送信出来るものがいいです
49 :
39-41 :2011/04/21(木) 06:23:13.53 ID:SSDaZ26P
>>29 どんな桁でも、ゾロ目を検知できる関数を作ってみた。
マイナスや、小数点以下にも対応。AS3の文法だが、手を加えればAS1系でも動くと思う。
function zorome(num:Number):Boolean{
if(num == 0)return false;
var _num:Number = (num > 0) ? num : -num;
while((_num % 1) != 0) _num = _num * 10;
var val:Number = _num / 10;
var i:Number = 0;
for(i = 11; i < val; i = i * 10 + 1);
return ((_num % i) == 0);
}
Base64Encoderってどこにあるの?
起動と同時にpopUpManagerを実行する方法はありますか?
ムービークリップの画像合成について質問があります。長文ですいません。 (2回に分けて投稿します) Flashでキャンバスに描いた円をムービークリップのシンボルに変換しました。 これをムービークリップを継承した自作クラスと関連付けしています。 このクラスで画像データを読み込んでいます。 やりたいのは、最初にシンボルに変更した円の内部にだけに画像を表示する必要があります。 円より画像の方が大きいので、クッキーの型抜きのような感じになると思います。 画像表示までは出来るのですが、円内のみに表示する方法がわかりません。 お手数ですがご教授ください。 ActionScript3.0
コードの一部 public class McImg extends MovieClip{ //コンストラクタ public function McImg(cUser:UserData) { m_loader.load(new URLRequest(m_cUserData.strImgUrl)); m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, coHabdler); } //画像をロード後に呼ばれる public function coHabdler(evt:Event){ var bmd : BitmapData = new BitmapData(m_loader.width,m_loader.height); bmd.draw(m_loader); var bmd1 : BitmapData = imageSizeCompressor(bmd,100,70); var bm:Bitmap = new Bitmap(bmd1); this.addChild(bm); } }
Web用途ではないのですが質問させて下さい。 今までDirecterでスタンドアロンのコンテンツを作っていたのですが、 お客さんの要望によりFlashで制作することになりました。 フルスクリーン表示をさせたいのですが、 普通にフルスクリーン表示にすると、中のコンテンツの解像度が変わるので 中のコンテンツのサイズを変えることなく、 背景だけを全画面表示させたいのですが、可能でしょうか? 例えばコンテンツのサイズが800×600pxの場合、どのサイズのモニターで見ても 背景は全画面表示(黒のベタ)で中央に800×600pxのコンテンツを表示させるこということをやりたいです。 どなたか、ご回答をよろしくお願いします。
>>56 出来るよ
フルフラッシュサイト、リキッドレイアウト、swffitなどで検索してみそ
>>57 説明が足りませんでしたが、デスクトップのスタンドアロン(プロジェクター出力)で
使いたかったのです。どうやらfscommandというプロジェクタ専用命令で
何とかできそうです。ありがとうございました。
>>53 後半読んでないけど、そういう用途ならDisplayObject.mask使えばいんじゃないの?
読んでやれよww まあマスクとかbitmapdataでdrawして切り抜くとか
61 :
53 :2011/04/22(金) 12:34:54.03 ID:dAJtcPQl
>>59 ,60
ありがとうございます。 マスクで簡単に実装ができました♪
62 :
35 :2011/04/22(金) 13:48:41.66 ID:pw/IH+gY
とりあえずmultipart/form-dataを送信する事が出来ました
アドバイスくれた方々、ありがとうございました
やりたいことは完全にクリア出来たので必要ないと思うのですが、
>>35 の後者のリンク先の件
自分の理解不足かもしれないので、もう少し試してみようと思ってます
63 :
Now_loading...774KB :2011/04/22(金) 17:53:19.02 ID:pw/IH+gY
Adobe Flash Professional CS5 AS3.0 下記をタイムラインに記述している時はエラーは出なかったのですが、.asファイルに書いたら 「1046:型が見つからないか、コンパイル時定数ではありません:IOErrorEvent」って出るようになりました。 info.addEventListener(IOErrorEvent.IO_ERROR,LoaderInfoIOErrorFunc); function LoaderInfoIOErrorFunc (event:IOErrorEvent):void { trace ("ファイル入出力のエラー"); } これ以外の処理は正常に動いています、何がいけないんでしょうか?
import書いてないんじゃね?
65 :
Now_loading...774KB :2011/04/22(金) 22:23:38.57 ID:BB8sXnDJ
AS2.0で教えてください。 テキストフィールドの書式を変えようと思い、以下のように書くと そのとおりになるのですが var mainText_fmt: TextFormat = new TextFormat(); mainText_fmt.color = 0x0000ff; mainText_fmt.size = 50; myArticlie.v_articlie_txt.setNewTextFormat(mainText_fmt); tmpText = "たらこはとてもおいしいです"; myArticlie.v_articlie_txt = tmpText; 書式を変えるのを最初の三文字だけに限定しようと以下のように 範囲を指定するとなぜか何もおきません。 myArticlie.v_articlie_txt.setNewTextFormat(0,3,mainText_fmt); ちなみにCSではなく、フリモ3というので作っています。 ノイローゼ気味です。よろしくお願いします。
66 :
Now_loading...774KB :2011/04/22(金) 22:24:35.53 ID:vBNnf20h
究極まで削ってみた、依然エラー出る これのどこが悪いですか? package { import flash.display.Sprite; import flash.display.MovieClip; import flash.utils.ByteArray; import flash.net.FileReference; import flash.events.Event; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLLoader; import flash.net.URLVariables; import flash.utils.ByteArray; import flash.net.navigateToURL; public class Main extends Sprite { public var LoadFileName:String = "fuga.swf"; public var url:URLRequest = new URLRequest(LoadFileName); public var loader_obj:Loader = new Loader(); public var info:LoaderInfo = loader_obj.contentLoaderInfo; public function Main() { loader_obj.load(url); info.addEventListener(Event.OPEN,LoaderInfoOpenFunc); } public function LoaderInfoOpenFunc(event:Event):void { trace ("読み込みを開始した"); } } }
>>65 tmpText = "たらこはとてもおいしいです";
myArticlie.v_articlie_txt = tmpText;
myArticlie.v_articlie_txt.setNewTextFormat(0,3,mainText_fmt);
こうするとか?
>>66 エラーも書いてくれた方が答えやすいと思う
推測してみるに、
>public var info:LoaderInfo = loader_obj.contentLoaderInfo;
これをコンストラクタの中で
info = loader_obj.contentLoaderInfo;
てやってみるとか
68 :
Now_loading...774KB :2011/04/22(金) 22:34:03.59 ID:BB8sXnDJ
>>67 ありがとうございます。さっそくやってみます。
69 :
65 :2011/04/22(金) 22:41:07.46 ID:BB8sXnDJ
>>67 さま
やってみましたが、だめでした…
アドビのAS2.0のレファレンスでもこの書き方なのですが、
だめだということは、きっとフリモ3がだめなんでしょうね…
安物買いの銭失いでしょうか…
>>67 てかsetNewTextFormatってFlashLiteの関数か
フリモのサイト見たらLiteのエクスポートは最新アップデータに更新する必要があるとか
書いてあるけど
そもそも2.0でimportとかいう概念あったっけ? つかプロトタイプベースが基本でクラスの概念ねーんじゃなかった?
クラス使いたいならなんで2.0でやってるかわからん。 ガラケーやりたいならなんでクラス使おうとしてるかわからん。
73 :
65 :2011/04/22(金) 23:01:14.00 ID:BB8sXnDJ
>>70 さま
FlashLiteのつもりではないのですが、
念のためアップデータに逝ってみます。
ありがとうございます。
あーできることとできないこともわかんない人だったか。
CS3, AS3で質問です。 bのボタンにaddEventListenerして その後removeしてるんですがremove出来ていません。 この場合はどうしたらremoveできるんでしょうか? b.addEventListener( MouseEvent.CLICK, test("Click") ); b.removeEventListener( MouseEvent.CLICK,arguments.callee ); function test(a:* ){ return function(e:MouseEvent):void { trace (a); }}
76 :
66 :2011/04/23(土) 00:07:30.16 ID:BcZMIMd0
>>67 ありがとうございます
いろいろやってみて、ありえないぐらい何やってもダメになったので
以前に自分で作ったクラスで、正常に動くもののasをコピーしてパブリッシュしてみたところ
同じLoaderでエラーが出てます、どうも自分の環境に問題あるようです
77 :
66 :2011/04/23(土) 00:26:05.21 ID:BcZMIMd0
勘違いしてました Loaderは.asで使うのはこれが初めてです 他の正常にパブリッシュ出来るのはURLLoaderでした var loader_obj:Loader = new Loader(); タイムラインにこれを記述してパブリッシュしてもエラーは出ませんが、 .asに記述するとスクリプトチェックでは異常なし、パブリッシュ時に 「型が見つからないか、コンパイル時定数ではありません」「未定義である可能性が高いメソッド Loader の呼び出しです。」となります なんででしょう?
importしてんの?
最初からエラー内容書いてたら三秒で解決してたよ…
81 :
66 :2011/04/23(土) 01:04:39.39 ID:BcZMIMd0
import flash.display.Loader; ( ゚д゚)!?・・・こ、これでぃすか?
82 :
66 :2011/04/23(土) 01:11:54.38 ID:BcZMIMd0
さらにimport flash.display.LoaderInfo;も追加して見たところエラーが消えました みなさんありがとうございました タイムラインに書いたら問題ないのに、asに書いたらきっちりimportしないとダメなんですね ネットでぐぐって独学でやってるので基本の所が抜けてるようです、お騒がせしました
おっと入れ違いか
>>82 Flash Developeつかってみ
ハイパー便利だから
85 :
66 :2011/04/23(土) 07:50:34.13 ID:BcZMIMd0
クラス宣言の後、コンストラクタの前の変数の宣言のところで、htmlからデータを受けとりたくて
public var flashVars:Object = this.loaderInfo.parameters;
って書きました
おなじみの「未定義である可能性が高いプロパティ LoderInfoに静的型Classの参照を使用してアクセスしています。」って出ました
import flash.display.LoaderInfo;
これでダメだったので下記に変えたのですが、依然エラーが出ます、import するものが足りないですか?
import adobe.utils.*;
import flash.accessibility.*;
import flash.display.*;
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
>>83-84 ありがとうございます、勉強になります
>>85 デフォルトぜんぶimportしたんかい…
そのエラーメッセージそのままコピペした?
だったら
LoderInfo.なんたらかんたら()
ってスタティックメソッドつかってない?
綴りが違うから勝手に変なクラス使うなっていわれてんじゃね?
87 :
66 :2011/04/23(土) 09:10:44.63 ID:VlcUjZJB
>>86 そのままコピペじゃなく手で書きました、打ち間違いです
とりあえず解決しました
ありがとうございました
メソッドにイメージファイルのURLとint値を渡して、
予め用意した配列のint番目に空であれば新しいloaderを用意して
イメージファイルを代入して、画面に表示しようとしているのですが、
下記の通り書いたのですが、画像が画面に表示されません。
トレースしたところ、下部でメソッドを呼び出していますが2回目に入ったときに
重複しているはずの配列要素が、undefinedになっていました。
おそらく配列の使用方法が間違っているかと思われるのですが、一体どこが悪いのでしょうか、、、?
var thumbs:Array = new Array();
function setThumbnail(imgUrl:String, num:int) {
if(num>=0) {
trace(thumbs[num]);
if(thumbs[num]) {
thumbs[num] = new Loader();
var url:URLRequest = new URLRequest(imgUrl);
thumbs[num].load(url);
addChild(thumbs[num]);
}
}
setThumbnail("
http://.xxx.jpg ",0);
setThumbnail("
http://.xxx.jpg ",0);
↑すません演算子を間違えていました。
if(thumbs[num]) { ってどういう意味?
thumbs[num]の中身が入っているかの条件のつもりです。 !を付けるのを忘れてました・・・
Arrayって初期の要素数ゼロじゃなかったっけ なんで1回目はundefinedじゃないんだろう
length使えばいいんじゃないの? てかまず中括弧の数があってないからよくわからん
いやなんでもない
例えば以下のような都内の白地図があったとします。
ttp://www.freemap.jp/japan/city_tokyo.html テキストファイル(data.txtなど)に、
shinjuku=1,shibuya=0
とあったとすると、新宿区のところだけに色を付けたいと考えています。
この場合、どのような手順で実装すれば良いでしょうか?
(考えられる手順としては、区の領域をオブジェクト化して、AS側で背景色を指定するのかなぁ、と思うのですが……)
ご教示よろしくお願いします!
矩形以外はなぁ… それぞれオブジェクト化するしかないんじゃん? 他の人の意見も聞きたいが
97 :
95 :2011/04/24(日) 02:13:25.95 ID:2BFOGJQg
>>96 鉛筆ツールでエリアをなぞってオブジェクトにして頑張りました><
先ほど初めてActionScript3.0をさわったので手探りの状態でしたが、いろいろググッてみて解決しました。
ご回答ありがとうございます!
AS3の初心者です。 1個のボタンを押すごとに動作を変え、3回押したら元に戻るという処理をしたいのですが、 以下のような処理で問題はないでしょうか?別のやり方や、もっとスマートな書き方があったら 教えてください。 sw:int = 0; //切り替え処理用の変数 push_btn..addEventListener(MouseEvent.CLICK,doClick); function doClick(e:MouseEvent):void { switch(sw) { case 0: 1回目のボタン処理(); sw++; break; case 1: 2回目のボタン処理(); sw++; break; case 2: 3回目のボタン処理(); sw=0; break; } }
変数の宣言で文字が抜けてました。以下に訂正します。 var sw:int = 0; //切り替え処理用の変数
いいとおもうよ switch(sw%3){} にしたらsw++はswitch文の外に出せるけどどうでもいいね
0・1の時同じ動作ならそれを「default :」に書いたりするとか
あと
>>100 の書き方にすればsw=0;は不要になるね
敵のモンスターが徘徊するような行動をプログラムしたいのですが、どのようなアルゴリズムにしたら良いのでしょうか 参考になるサイトがあれば教えて下さい。よろしくお願いします
104 :
Now_loading...774KB :2011/04/24(日) 19:26:48.33 ID:E+oAJuGF
flashCS5、AS3です。 年月日の情報が2つあって、 古い方が、"2011-03-10"というString型で保存されているとします。 そのとき、今日の日付を取得して、古い日付との差の日数を取得したいのですが、年によって月の日数が異なったりするのでうまくできません。 どう考えればいいんでしょうか? 詳しい方教えてください。
>>104 Dateのインスタンスを今日の日付と古い日付の2つ作って、ミリ秒で差を取って日数に変換するとか?
106 :
Now_loading...774KB :2011/04/24(日) 20:54:43.92 ID:E+oAJuGF
>>105 ありがとうございます。差についてはなんとなくできそうです。
そしてまたいきづまったんですが、
ミリ秒から日付を特定するにはどうしたらいいんでしょうか。
古い日にちと新しい日にちの間にある、特定の一日の日付の出し方ができそうでできません。
>>106 一般的には、差分のミリ秒÷(1000ミリ秒×3600秒×24時間)で、
日単位の数値が出てくる。
変な端数が出てくる場合は、今日の日付取得する際、時や分や秒まで
Dateから導いていないかを確認すること。
108 :
Now_loading...774KB :2011/04/24(日) 21:57:46.80 ID:E+oAJuGF
>>107 ありがとうございます。
何度もすいませんが、
古い年月日と今日の間のある日にちを、
YYYY年MM月DD日に変換することは可能ですか?
ミリ秒/1000/60/60/24で1970年1月1日からの日数を算出することができますが、
年になると、
上を365一律で割ると正確な西暦にならないので、悩み中です。
ミリ秒からDate作れるからそこから日付取ればいいんじゃないか こんなのリファレンス見りゃ分かる程度のことだけど
すみません。リファレンス見てきます。
最近ようやく、「addEventListener(Event.ENTER_FRAME,doFunction)」を暗記で入力できるようになったよ。 記憶力が弱いと何をやるにしても辛いね。
114 :
Now_loading...774KB :2011/04/25(月) 03:33:40.50 ID:Oaf+SnZ5
cakephpというphpフレームワークで
出力されているurlにswfでリンクさせる
方法ってgetURLとかで簡単にリンクできますか?
ヘッダー、フッター、サイドメニューをphpのテンプレートで出力し、
コンテンツ部分をiframe(ファイル名を十進数にして出力)で
表示させてるらしいのです。
テンプレートでのphpは以下のような記述です。
-------------------------------------------
<?php global $directory;
$url = $this->Html->url(array('controller' => 'common',
'action' => 'ヘッダー、フッター、サイドバー出力.ctp'),
array('escape' => false));
?>
<a href="<?php echo $url;?>/iframeurl:<?php echo bin2hex($directory.'aaaa/bbbb.html');?>">リンク</a>
----------------------------------------------------
上記で出力されるページを、
swf内のボタンでactionscriptでリンクさせたい場合、
以下のように単純な指定でリンクすることはできますか?
on (release) {
getURL("
http://ドメイン/ctp格納ディレクトリ/ヘッダー 、フッター、サイドバー出力.ctp/iframeurl:<十進数で出力されたaaaa/bbbb.html>");
}
as3.0標準の乱数に初期値ってありますか? 常に同じ乱数列を出したい場合はどうすればよいでしょうか
>>115 無いから自分でそういう乱数のプログラムを作るしかないと思う
以前俺もそれやりたくなって、「ActionScript 乱数」とかでググったら色々あったよ
117 :
Now_loading...774KB :2011/04/25(月) 13:47:46.90 ID:2qo57wYw
118 :
Now_loading...774KB :2011/04/25(月) 15:48:10.03 ID:SEqNlBV+
AIRでアプリを作っているのですが、 重たい処理を行っている最中にUIの描画が止まってしまいます。 FlexでないのでcallLaterも使えず悩んでいます。 並列処理を行えば解決できそうなのですが、どうしたらいいでしょうか?
120 :
Now_loading...774KB :2011/04/25(月) 16:29:02.89 ID:chuF1x+T
DataGridのItemEditorに カスタムコンポーネントを使用し、 カスタムコンポーネントからは カスタムイベントをdispatchするようにし、 そのイベントをDataGridで キャッチするようなものを作ろうとした場合、 FlexでXMLを使って記述していくのは難しいのでしょうか? ASでガリガリ書いていくほうがよいのでしょうか? 説明がヘタクソでホントに申し訳ないのですが、 やりたい事は、DataGridの、あるカラムの ItemEditorにTextInputを使用します。 そして、TextInputをダブルクリックしたら 小画面を表示して、小画面で入力(もしくは選択)したデータを 親画面の(DataGridに表示している)TextInputに 表示してあげたいのです。 DataGridではTextInputに入力されたデータを元に 別カラムの情報を更新するといったような形を取りたいと思います。 参考になりそうなサイトを見つけることができなかったので、 もしサイトもご存知であれば教えて頂けないでしょうか。 よろしくお願いします。
121 :
Now_loading...774KB :2011/04/25(月) 17:20:46.05 ID:cQlpbIHC
すみません。 Flash9でAS3を使ってます。 mc内に、b_1、b_2、b_3というMCが横に並んで配置してあり、 これをswfを読み込むたびに位置をランダムに替えたいと思っています。 下記のスクリプトを書いたのですが、Arrayに暗黙の型変換していると言われて 動かないです…。 どなたかご教授ねがいます! 本文長過ぎだそうなので下記にスクリプトかきます
122 :
121 :2011/04/25(月) 17:42:24.97 ID:cQlpbIHC
var List:Array = [1,2,3]; var imgX:Number = 0; var img_marginX:Number = 15; for (var i:uint = 0; i < 3; i++) { var intrnd:Array = Math.floor(Math.random()*List.length); this["b_" + List[intrnd]]._x = imgX; List.splice(intrnd,1); imgX=img_marginX+this["img" + List[intrnd]]._width; }
123 :
Now_loading...774KB :2011/04/25(月) 17:52:23.07 ID:Xa01BtW9
>>120 どっちでもできるとは思う
MXMLで書くにしても<mx:Script>とかでAS書くしかなさそうだけど
>>121 >var intrnd:Array = Math.floor(Math.random()*List.length);
ここじゃね?
NumberなのにArrayにしようとしてるし
>>124 とりあえずtrace(dataList[1][0])ってやって中身確かめてみたら?
125 :
123 :2011/04/25(月) 19:22:12.84 ID:IMkUg9vw
>>125 >>123 のリンク先が会員用で見れないからアレだけど
String(dataList[1][0])とかdataList[1][0].toString()みたいにして
String型に変換してみるとかかな〜
>>118 そうめんが実際そうだけど、並列処理は不可能なので擬似並列するしかない。
やり方としては処理分散させて、setInterval、EnterFrameで回すとか。
>>126 //分割したデータを扱う配列を準備
var dataList:Array;
//読み込み完了後の処理を作成
loader.addEventListener(Event.COMPLETE,traceData);
function traceData(event:Event){
//改行記号で分割
dataList = loader.data.split("\r\n");
//分割されて作成された配列の個々のメンバーをタブ記号で分割
var tabSplitClosure = function(item,index,arr){
arr[index] = item.split("\t");
}
dataList.forEach(tabSplitClosure);
//結果を確認
trace("配列の長さは," + dataList.length);
trace("1行目,0列目のデータは," + dataList[1][0]);
trace("2行目,2列目のデータは," + dataList[3][2]);
}
こんな感じです。traceではちゃんと見れます。変数に代入できません。
>>130 前者のエラー
1067: 型 String の値が、関連しない型 Class に暗黙で型変換されています。
1188: クラス String への代入が無効です。
後者のエラーです
1188: クラス String への代入が無効です。
いろいろとググってみてるのですが、普通に代入出来る前提でとほほです
>>129 今ちょっと
>>129 をコピペしてプログラム作って、traceDataの中で代入してみたけどエラー出なかったぞ
何かクラスの名前とかタイプミスしてんじゃね?
>>133 ・・・
//結果を確認
trace("配列の長さは," + dataList.length);
trace("1行目,0列目のデータは," + dataList[1][0]);
trace("2行目,2列目のデータは," + dataList[3][2]);
var TitleName:String = dataList[1][0];
↑これを入れると自分のとこではエラーになります
}
自分の凡ミスですかね、もう一回最初からやってみます
自分のミスだったようで、最初からやったら普通に代入できました、お騒がせしました
質問させて頂きます。 "."を含む文字列のsearchがうまくいきません。 var hoge1:String = "hoge"; var hoge2:String = "xhoge2"; var hoge3:String = hoge + "."; index = hoge2.search(hoge3); のように書くと、なぜかhoge3("hoge.")が"hoge2"(xhoge2)とマッチしてしまい、 inedxに1が代入されてしまいます。 "."を含む文字列をsearchするにはどうしたらよいのでしょうか?
>>138 hoge + "."→hoge + "\\."
やってみたらこれでいけた
hogeってどこで宣言してるの
>>137 ありがとうございます!!
エスケープ2つ必要なんですね・・・
1個しか試してませんでした・・・・
>>138 申し訳ありません、誤植でした。気をつけますorz
140 :
118 :2011/04/26(火) 11:16:42.44 ID:3SpCmN04
141 :
Now_loading...774KB :2011/04/26(火) 18:12:39.06 ID:aHGflNKp
Flexのプリローダーについて質問! 公式リファレンスにある、 Flex の標準コンポーネントは一切使用しないでください っていうのは、具体的にどれを使っちゃだめなんですか? import mx.*のやつ? import mx.controls.*のやつ?
mx.preloadersがあるから、mx.*はあり得んとおもう。 あと、mx.eventsは使える。 spriteとかでシンプルにやるやつじゃないと プリローダの意味が無いと思うんだが。
143 :
Now_loading...774KB :2011/04/26(火) 20:20:31.52 ID:iwnx8Hkw
WinXP Home + CS4です。 音声ファイルを読み込んで、クリック時に鳴らす、ということをしたいのですが Sound.loadで読み込めるのはMP3のみ、とのことです。 しかしMP3ではSound.play()してから実際に音が鳴り始めるまでの 時間(レイテンシ)が長すぎます。 どうにかしてWAVをSound.loadで読み込ませるか、あるいはMP3でも レイテンシを短くする方法があったら教えてください。
すぺのpublic変数はprivateにしてsetter/getterを設定したほうがいいのでしょうか? オブジェクト志向的に外から直接いじれちゃうってよろしくないの?
>>142 mx.effectとかは?
フェードとかグローなんかを使いたいなと思ってるんだけど・・・
共有オブジェクト(solファイル)が保存される場所について質問です 自分で作ったswfをマイドキュメントに保存して実行すると C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Flash Player\ #SharedObjects\localhost\Documents and Settings\ユーザー名\My Documents\ というとんでもなく深い階層にsolファイルが保存されていました。 localhostフォルダに直接solファイルが保存されるようにするには SharedObject.getLocal();の第2引数をどう指定すればいいんですか? 環境はWindowsXP+FLASH8です
ActionScript3.0の物理エンジンって色々あるようですが今どれが一番いいのでしょう? シェアウエアの方が良いのかな
>>146 ttp://bit.ly/eTmht4 をよーく読んでみよう。
ファイルの指定は「/」からになってるよね?
ドライブ名がないのはなぜだと思う?
それは、[SOL_PATH]/ の意味だたら。
[SOL_PATH]はFlashが決めた場所で、ユーザーには手出しできない。
どうしてもというなら、ByteArray.readObject()を調べてみて。
>>147 描画機能もついてるしふつうにBox2dにしたら?
2.1はあんま資料ないけど
>>145 ごめん、そこまで確認してない。
とりあえず、やってみたらいいと思うよ。30分もあれば確認出来るでしょ。
loaderを利用してURLから画像をロードして、ロードが完了したら その画像をリサイズ、位置を設定して、最後にMovieClip型に代入して表示するという作業をしたいのですが、 loaderの読み込み完了時のリスナー内でloaderのcontentのプロパティを設定しようとすると 画像が消えてしまいます。FLASHでのパブリッシュプレビューではしっかりとリサイズ、配置されて表示されるのですが・・・ 一体なにが悪いのでしょうか。ソースは↓です。よろしくお願いいたします。m(__)m var gthumb; var url:URLRequest; var loader = new Loader(); url = new URLRequest(isUrl); loader.load(url); gthumb = loader; gthumb.contentLoaderInfo.addEventListener(Event.INIT, resizeImage); function resizeImage(evt:Event):void { evt.target.content.width = 75; evt.target.content.height = 74; evt.target.content.x = 450; evt.target.content.y = 120; var tmp:MovieClip = new MovieClip(); tmp.addChild(evt.target.content); gthumb = tmp; addChild(gthumb); evt.target.removeEventListener(Event.INIT, resizeImage); } トレースしたところ、リスナー内のevent.target.contentを設定しているとこで画像が消えているみたいです。。。
152 :
Now_loading...774KB :2011/04/27(水) 14:59:51.19 ID:Fx3+Ss1t
Flash Pro CS5 AS3.0 ライブラリに登録した画像をステージに配置したい ライブラリに「キャラクター」名でムービークリップを作成しました AS3.0でステージに表示したい場合は何て書いたらいいですか?
>151 initイベントだとロード完了してないから completeイベントに変えた方が良いかも >152 var 変数名:MovieClip = new キャラクター(); addChild(変数名);
>>153 変数名だけ半角英字に変えて、あとはそのまま貼りつけたのですが
「1180: 未定義である可能性が高いメソッド キャラクター の呼び出しです。」って出ます。
156 :
154 :2011/04/27(水) 15:59:45.54 ID:Fx3+Ss1t
157 :
Now_loading...774KB :2011/04/27(水) 18:28:59.46 ID:Fx3+Ss1t
HTMLのobjectタグにallowFullScreenパラメーター追加して、AS3.0に↓のように書きました PlayControlPanel.BtnScreen.addEventListener(MouseEvent.CLICK, BtnScreenClick); function BtnScreenClick(event:MouseEvent):void { stage.displayState = StageDisplayState.FULL_SCREEN; } 同じように他のボタンは機能してるんですが、フルスクリーンだけ機能してないです どこに間違いがあるんでしょうか?
159 :
Now_loading...774KB :2011/04/27(水) 19:52:16.77 ID:pTxwDSnR
AS3,XP,CS4です。TextInput内の文字の属性設定方法が分かりません。 txtTというTextInputを用意し、 import fl.controls.TextInput; txtT.text = "あいうえお"; としました これで試しに文字の大きさを変えるために、txtT.setStyle("fontSize", "15"); と してもエラーも出ず変化ありません。 またTextFormatは使えませんでした。目標は色とサイズとフォント種類を変えること です。 ググっても分かりません。アドバイス願います。
4月はカオスだなあ・・・ ちょっとは勉強しろよ
>>148 "/"にしたらいけました!ありがとうございます
147です。 Box2dをダウンロードして展開し、サンプルのPhysTest.flaファイルをクリックすると 〜\Box2DFlashAS3 2.1a\Source\Box2D\Dynamics\b2World.as、行 871 1046: 型が見つからないか、コンパイル時定数ではありません : b2Fixture。 というエラーが出てしまいます FLASHのCS4でもCS5でもエラーになります CS4ではb2Fixtureの部分がVectorになります サンプルファイルなので自分は手を加えていませんし、動作するはずなのですが… 何か間違っているのでしょうか?
クリックってのはコンパいるのことかな? ライブラリのパスはもちろん通ってるよね?
hakuhinさんは2.0時代からお世話になってるなあ
166 :
159 :2011/04/27(水) 22:47:32.79 ID:pTxwDSnR
>>161 レスどうも。まずフォントとサイズを指定するため
txtT.text = "あいうえお";
var format = new TextFormat();
format.font = "MS ゴシック";
format.size = 14;
txtT.setTextFormat(format,0,4);//設定
としたところ、下のエラーが出ました。
1061: 未定義である可能性のあるメソッド setTextFormat を、静的型 fl.controls:TextInput の
参照を使用して呼び出しました。
そこでsetTextFormatを使用可能にするため、最後の行を下記の様にしたところエラーには
なりませんが何も変化しません。
txtT.textField.setTextFormat(format,0,4);
どうしたら良いでしょうか?
もうTextFieldつかったら…?
>>164 http://www.ymori.com/fps2008/resume.pdf ここを見るとflaファイルとライブラリが同じフォルダにあればいいとあり
またBOX2dのREADMEでも
//
To compile the demo:
//
Flash: extract Box2DFlashAS3 and open PhysTest.fla in Flash CS3 (9) and hit Ctrl+Enter.
と書いてあるので、そのままでいいのかと思ったのですが…
今、パブリッシュ設定を見直したところフラッシュプレイヤーがVer9になっており、 これを10にしたところ解決しました! お騒がせして申し訳ありませんでした
>>169 あーなるほど
でも自分で何か作るようになる時にいちいちコピーするのあれだしパスは通したほうがいいよ
ライブラリ置き場作ってさ
2.1はb2AABBとかいうクラスはなくなったみたいだから注意
171 :
Now_loading...774KB :2011/04/27(水) 23:25:35.88 ID:E7kSEOsh
AS3です。 var tempDate:Date=new Date(tempDate.time+1000*60*60*24); という文を繰り返して、 都度、getDateとかすると たとえば、4月30日、4月31日、5月1日、・・・と、4月31日というありえない日にちを出すんですが、 本来のカレンダーに存在するかどうかを判定するにはどうすればいいですか?
monthは1月の場合0になるから 5月31日を4月31日だと思っているだけかと
173 :
159&166 :2011/04/28(木) 00:04:15.27 ID:7a0Gdnuc
>>167 setFocusさせたいのでTextInputを希望しています。
どうしてもダメな場合にTextFieldを使いたいです。
引き続きお願いします。
174 :
Now_loading...774KB :2011/04/28(木) 00:17:20.08 ID:4HeLGX4q
>>172 その辺は注意してたつもりですが、もう一回確かめてみたところ、
下のような結果になります。
var kari_date:Date = new Date(2011,4,30);
var kari_month:int = kari_date.getMonth();
trace(kari_month);//4
var tugi_date:Date = new Date (kari_date.time+1000*60*60*24) ;
var tugi_month:int=tugi_date.getMonth();
trace(tugi_month);//4
var tugi_day:int=tugi_date.getDate();
trace(tugi_day);//31
どうなってるんでしょう。
AS3で相対パスに関する質問 new URLRequest("data.txt");等、相対パスでデータの取得をする際 ダウンロード実行前に絶対パスを求めることはできないのでしょうか。 ようはベースパスがわかればいいのですが、swfとhtmlのディレクトリが違ったり html側のbaseタグやparamタグでベースが変更されていることがあるため loaderInfo.urlを削るといった手法では対処できませんでした。 JavaScriptとの連携も取らないことが前提となっていて、どこに手を付けていいかわかりません。 取得するデータが画像ファイルだった場合は、取得が成功したときのみ 画像のloaderInfo.urlに絶対パスが入っていたので、Flashプラグイン側が 持っている情報だけでも絶対パスが求まるのかなと思い質問しました。
ん?もしかして一行目の4って数字が本来の5月を意味してますか??
0から11まで全部traceしてみろ。
178 :
Now_loading...774KB :2011/04/28(木) 04:24:02.19 ID:cOU9hzQW
CS4使ってますが、 import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent; しても、コンパイル時にイベントハンドラの引数のところで、 e:AccelerometerEvent を使うと1046(型が見つからないかコンパイル時定数ではない)エラーがでてしまう。 どうしてでっしゃろ偉い方
検索しても見つけられないけど、 もしかするとCS5使えって話なんだろうか。
ブラウザの仕様なんだろうが、細かなバージョンアップをしてファイルサイズも若干変換しているのに キャッシュされたswfしか表示せず、最新のswfで実行結果が見れない 単体で完結するものではなくphpと通信しながらやるだけに、php側の問題なのかswf側の問題なのか 原因の切り分けに苦労する みんなはどうやってる?
〜.swf?hoge みたいに、後ろにランダムにURL足せば別URLとしてあつかわれてキャッシュ使用なしじゃなかったっけ? 自分の場合Webアプリ作ってないんでうろ覚えだけど。
>>178 iPhoneアプリ用のやつ?
とりあえずクラスパスにAccelerometerEventのクラスファイルあるか検索してみたら
あるtextfieldをAS3で宣言して、シェイプやシンボルの上に配置して、あるボタンを押すと 100フレームほど先まで飛ぶように設定しているのですが、 100フレーム先に行くとそのtextfieldがシェイプやシンボルの裏に隠れてしまいます。 最初は消えてしまったのかなと思ったのですが、シンボル等をどけると出てきます。 右クリックで最前面に移動をしても、フレームのasにsetChildIndex(instance, 0)を書いても直りません。 一体なにがわるいのでしょうか・・・。
>>183 textfieldをシェイプを配置するのと同じコンテナ(A)に配置しているのが原因ではないでしょうか。
その1つ上のコンテナ(P)に、コンテナ(A)の1つ上に配置してしまえば
コンテナ(A)にどんなシェイプが追加されても隠れることはなくなると思います。
setchildindexで0って最背面だろ。
>>184 ありがとうございます。正直よく理解できていませんが、
消えてしまうフレームの開始でthis.addChild(instance);したところ直りました。
textFieldはフレーム1で、DisplayObjectを指定せずにaddChild(instance);しているので
親コンテナはおそらくthisになっているかと思っているのですが・・・
上記の通りthisにaddChildが成功したってことは、thisの子じゃなくなっていたってことですよね。
フレーム1のaddChildをthisにしても、現状は変わらなかったので、
何かが原因でthisの子じゃなくなっているみたいです。
コンテナについて勉強してきます。ありがとうございました!
AS3.0 ある変数に数字で800が格納されているとする それを○分○秒みたいにする関数ってありますか?
無い。無くて問題ないよな??
おk、今作った ところで、ユーザー定義関数内で使う変数は宣言の必要ないの?
簡単に聞いてごめんなさい ちゃんと宣言しないとダメでした
カスタムのHOGEクラスのインスタンスhogeを trace(hoge) した時出力に表示される情報って設定できる?
toStringをオーバーライドしたらいいはず
>>192 できました
overrideキーワードは使ってはいけないようなのでふつうに
public function toString():String{}
でいけました
ありがとうございます
194 :
169 :2011/04/28(木) 20:09:56.00 ID:BuDOALxf
>>170 一日遅れになりましたがありがとうございました
b2AABBクラスがなくなったというのを読んで別のエラーの原因もわかりました
>>182 レスどうもでした。
どうやらCS5.5の発売を待って購入した方が良いのかもしれないという結論に。
ちなみにAIR for Androidで離着陸だけのフライトシミュ作ってる。
昔のタイトーみたいなやつ。
ポリゴン数増やすと動かない、Papervision3Dポリゴン欠けまくりと、
問題は山積み。
>>195 ポリゴンかけってFrustumClippimgとかQuadrantRenderEngineでなんとかなんないの?
激重だけど
>>196 FrustumClipping.NEARとBOTTOMが効けばとりあえずは最適っぽいんだが、
+で両方指定やALLするとダメになるという。
あと、QuadrantRenderEngineは全くだめで、
ランウェイが微細に靄がかかったように欠けるような感じかつ重くて諦めたところでした。
ちなみにFogMaterialはBasicRenderEngineでしか使えないよね?
FrustumClippingの問題はわからん QuadrantRenderEngineはBasicRenderEngine継承してるからfilterプロパティもってるしFogFilterいけんじゃね?やってないからなんともいえんえど
>>198 記述が100%正確であった自信はないんだけど、
QuadrantRenderEnginでのFogMaterialは一昨日試したらコンパイルエラーだったんだよね…
あーBOTTOM指定だとピッチやロール動作時に地面が欠けるし、
NEARだと着陸したらランウェイが欠けるwもうどうしようもない
200 :
Now_loading...774KB :2011/04/29(金) 10:50:05.52 ID:68yxDELO
>>200 とりあえずネットに落ちてるサンプル拾ってきて実行してみたら?
それでダメならここでは分からんだろうな
203 :
Now_loading...774KB :2011/04/29(金) 14:38:00.85 ID:68yxDELO
>>201-202 いろいろサンプル拾ってやってうまく行かなかったけど、なんとか出来た
ありがとう
原因はAS3.0のソースじゃなくて、htmlのobjectに<param name="allowFullScreen" value="true" />だけ書いても駄目だった
インスタンスa内にインスタンスbとインスタンスcがある場合に bの状態に応じてcを操作したいことかままあります bから直接操作するにはcのパスが必要です bの状態が変わったらbからイベント送信するにもcへのパスが必要です みなさんはこのような場合にはcへのパスを保持していますか? 根本的に間違っているかもしれないので他にいい方法があれば教えてください
>>204 参照必要なときは引数でわたすかなあ
もっとも今回の場合なら、
aに、bとcを操作するメソッドを用意するとか、構成を変えるかも
>>204 bとcが親しいクラスで1対1の関係だったらそうするのが手っ取り早い
逆に別パッケージや別開発者だったりたn対nの関係なら、その管理はaに任せるべき
イベントB'を定義し、bの状態が変わったらイベントB'を発行してaが受け取り、
必要に応じてaがcを操作する
>>206 イベントB'を発行するのはbですか?
その場合bにaの参照を持たせる感じでしょうか
>>207 そうなります
bにaの実装を認識させたくないような場合は、EventDispatcherなどの
標準ライブラリの仕組みを利用します
>>208 申し訳ありません
標準ライブラリの仕組み、とはどのように利用するのでしょうか
ごめんなさい、EventDispatcherの仕組みはちょっと説明しづらいですので
もっとシンプルな方法で
例えばインスタンスbのクラス定義に
public var funcNotify:Function;// 通知のコールバック
のように書かれていて、何か更新があれば
funcNotify();
でインスタンスaの関数を呼び出します
インスタンスaのクラス定義には
public var function onNotifyB():void
{
// cを操作する処理
}
と定義しておき、初期化時に
b.funcNotify = onNotifyB;
と自分の関数を設定します
aの参照をbに丸ごと渡すのではなく、aの1つの関数だけを渡すことで結合度を弱めます
標準ライブラリを使用するとさらにお互いの実装を意識しなくてすみますが、
>>206 の通り1人で短期間での開発なら必要ないと思います
>>210 なるほど
b内のfuncNotify();でaのprivate変数にはアクセスできるのでしょうか
212 :
Now_loading...774KB :2011/04/30(土) 01:25:25.01 ID:2MPROBzj
As3です。 ラジオボタンのグループ名をgroup_hogeとした複数のラジオボタンを配置。 スクリプトで、どのボタンが選択されたかを調べたく、 group_hoge.selectedData を書きましたが、 A term is undefined and has no properties. というエラーが出ました。 どう解決したらいいのでしょうか。
>>211 できるよ、bのfuncNotifyはaのonNotifyBへの参照であって、
onNotifyB自体はaに書いてあるんだからさ
ちなみにonNotifyBがprivateであっても渡せる
>>213 なるほど。
a.onNotifyB()と同じ動作ができるんですね
明日やってみます
インターフェースで変数って定義できないの?
>>215 そこでgetter・setterですよ
>>216 なるほど!できました!
ありがとうございます
追記で
ある変数hogeがあるクラスAのサブクラスかつインターフェースIを実装していることを保証するにはどうしたらいいですか?
具体的には変数hogeがI実装メソッドを実行し、その後addChild(hoge)したいのですが、addChildの引数になれるのはDisplayObjectを継承してなくてはなりませんよね
var hoge:IだとaddChild(hoge)で怒られてしまいました
>>217 クラスAがDisplayObjectを継承しといたらいいんじゃね?
>>218 もちろんしているのですが、
var hoge:I
I.peropero()
addChild(hoge)
ではhogeにDisplayObjectを継承している情報がない?のでできませんでした
>>219 var hoge:I→var hoge:Aじゃダメなのか?
DisplayObjectを直接、じゃなくてDisplayObjectを継承してるクラス(Shapeとか)を継承しとかないと
インスタンス作る時に例外が出るようだけど
もうひとつ クラスAとそのサブクラスBがあって var hoge:Vector.<Vector.<A>>=new Vector.<Vector.<B>>() が暗黙の型変換しとると怒られます hoge[2][4].Amethod()とかやりたいのですが、なにがいけないのでしょうか
>>220 A(I)→Sprite
B(I)→Sprite
のような構造なのですが、
変数hogeを使って
hoge.Iメソッド()
addChild(hoge)
をやりたいのですが、
hoge:Iでも
hoge:Spriteでもうまくいかないのです
もっと言うと 二次元Vectorのhogeを使って hoge[1][3].Iメソッド(); addChild(hoge[1][3]); をやりたいのですかVectorの定義と両方の特徴を持つ方法を探しています
textAreaのtextが動作をするたびにクリアされてしまうんですが、なにが原因だと考えられるでしょうか。 textAreaはasでなくflashのコンポーネントメニューから選択して設置しています。 フレームのうちstop();の制御があるフレームにのみ設置されていて、インスタンス名は同じ名前を入力しています。
227 :
225 :2011/04/30(土) 20:52:16.20 ID:pR9UWjx/
>>226 おお・・・すいません。
環境はAS3、FlashCS5を使用しています。
コンポーネントから引っ張って画面に貼り付けているので、
コード内に記述されていません。
全てのフレームに貼り付けているのでなく、stop();があるフレーム数箇所のみに設置しており、
いずれかのstop();フレームで停止するとそのtextArea.textの中身がすっからかんの状態です。
228 :
Now_loading...774KB :2011/04/30(土) 22:43:06.17 ID:GXnSdaTY
AS2.0です。 複数の音源を同時にスタートさせるためにはどうすればいいですか? 例えばA、B、Cという3つの音声ファイルを同時にスタートさせてAだけOFFしてもBとCは流れ続けて、 途中でAをONにするとまたBとCと一緒に音楽が続くという感じのをつくろうとしてます。
外部XMLデータを取り込んでテキストフィールドに代入しようとしています。 ところが、traceで正しく表示されている筈の文字列が、 歯抜けの様に抜けて表示されてしまいます… CS4 AS3.0使用です。 XMLデータを取り込むのは成功しています。 <j_name>山田 花子</j_name> <e_name>Hanako Yamada</e_name> var e_nameList:XMLList = theXml..e_name; var en_name:String = e_nameList.toString(); en_name に文字列を代入し、 traceで値に正常に入ってるところまでは確認しました。 Hanako Yamada ところが、 en_name_txt.text = en_name; してFlashのステージに表示される と、 Hanako aada になってしまいます。なぜか、Yとmが抜けてしまう… 日本語名は半角スペースが入っていても、そのまま表示されました。 ちなみに、"Hanakoyamada"とyamadaの前に半角スペースを空けず、 大文字も最初の一文字だけにしたらすべて表示されました。
230 :
229 :2011/04/30(土) 23:03:17.61 ID:YESkymu6
長文失礼しました。何か突破口があれば有難いのですが 現状原因が思いつかなくて八方塞です。 ここおかしい!!という部分を指摘頂けるだけでもありがたいです。 よろしくお願いいたします。
en_name_txt.text = "Hanako Yamada" したらどうなるのっと
232 :
229 :2011/04/30(土) 23:22:56.63 ID:YESkymu6
>>231 ありがとうございます!
やってみてやっと気がつきました。
そもそもXMLとかASの問題じゃないんじゃないかと…
ほんっっっとうに申し訳ありません。
昨日徹夜で一日悩んでいたのに、原因はテキストフィールドに設置している
フォントでした。
デザインの良いフォントを選んで、埋め込みにすれば大丈夫か?
と使っていたのが良くなかったようで
試しに普通のMS P ゴシックにしたら表示できました。
ASスレ汚しで本当に申し訳ありませんでした。
>>225 普段コンポーネントとか一切使わんからよくわからんが、
フレーム毎に置かれてるんならそりゃ別インスタンス扱いじゃないか?
レイヤ分けて、全フレーム通しのレイヤにテキストエリアを設置、
あとはフレームで切ったレイヤにスクリプト書いて位置やvisible変更したらどうかね
234 :
159&166 :2011/05/01(日) 00:32:39.16 ID:x5gDOeri
(自己解決:TextInputの色とサイズとフォント種類を変更) ComboBoxのフォント変更を参考に出来ました。 ※TextFormatとsetStyle()の使い方が悪かったようです。 例えば文字サイズを15にするには var tf:TextFormat = new TextFormat(); tf.size = 15; txtT.setStyle("textFormat", tf); でOKでした。 しかし、txtT.textField.setStyle("textFormat", tf); は不可でした。
>>228 OFFにするときに停止させるんじゃなくsetVolumeで音量を0にすれば
無音状態の裏でも流れ続けてるので復帰したときに元通りになると思う
・ムービークリップ製のボタンを3つ配置する
// ボタンA (ムービークリップ "MC_A")
on(Press){vol = 100 - vol ; _root.snd_A.setVolume(100 - vol);}
// ボタンB (ムービークリップ "MC_B")
on(Press){vol = 100 - vol ; _root.snd_B.setVolume(100 - vol);}
// ボタンC (ムービークリップ "MC_C")
on(Press){vol = 100 - vol ; _root.snd_C.setVolume(100 - vol);}
・音楽再生させたいところに書く
snd_A = new Sound(MC_A); snd_A.attachSound("bgmA"); // "bgmA"の部分は使いたい音源のリンケージ識別名に変える
snd_B = new Sound(MC_B); snd_B.attachSound("bgmB"); // new Sound();の括弧内(ムービークリップのインスタンス名)は
snd_C = new Sound(MC_C); snd_C.attachSound("bgmC"); // 省略したり同じインスタンス名にすると一括で音量操作されてしまう
snd_A.start(); snd_B.start(); snd_C.start();
間違ってたらごめん
236 :
Now_loading...774KB :2011/05/01(日) 02:52:43.18 ID:DZOs7cvf
>>235 丁寧にありがとうございます!
new Sound();の括弧内をそれぞれ上記の通りにMC_A,MC_B,MC_Cとしてるんですが
ミュートが一括でされてしまいます。何か設定が足りないのでしょうか。
自己解決しました!スレ汚してすみません。 ただし何が原因だったのかわかりませんでした。
238 :
Ninja :2011/05/01(日) 14:14:03.84 ID:KWMttTbQ
画像を入れてトゥイーンなどで先にアニメーションをつくっておいて ActionScriptで画像を外部ファイルから読み込んだ別の画像に置き換えることは可能でしょうか?
>>238 つまり、仕組み(ストーリー)を先に作っておいて、画像を差し替えて
汎用的に使いまわしたいってこと?
とりあえず、自作のコードを示すと吉
トゥイーンってCS4あたりからコード化できなかったっけ
xmlの読み込みに関する質問です <?xml version="1.0" encoding="UTF-8"?> <data> <x id="2"/> </data> みたいなxmlのx要素のid属性の値を読み取ろうと思うのですが、 loadした後に dot=xml.firstChild.childNodes; trace(dot); で <x id="2"/> と表示されたのですが、同じ条件で trace(dot.id.value); trace(dot.attributes["id"].value); trace(dot.attributes.item(0).value); trace(dot.getAttribute("id").value); とやっても値をとれません・・。 正しい属性値のとり方を教えてください! ちなみにParaFla!でやっているので Flash8(AS2)相当のスクリプトなら動作すると思います。 あとOSはWin7(JP)です。
>>240 Animatorクラス(モーションXML)のこと?
>>239 LoadMovieで画像を読み込んでActionScriptで座標と大きさを設定して動かすところまではできたけど
そこから先がよくわからんのです。
>>242 うーんできませんでした。
ただ、そのあと、dotの型を調べてみてオブジェクト型がだったので
文字型に変換してsplitで無理やりとることはできました。
正しい方法を教えていただければそっちに切り替えますが
とりあえずはこれで行ってみようと思います。
ありがとうございました。
(なにか情報があればお願いします)
paraflaのライブラリならE4X記法使えんよ。soreAS3.0からだから。 flexSDKにxPathかなんか入ってんじゃなかったかな? なきゃどっかの野良xpathクラス落として使えばいいんやね?
>>244 AS2.0?
BitmapクラスやTweenクラス使って書けば、やりたいことは実現可能だろうけど
オーサリング環境で配置したタイムラインの画像を入れ替えるのは
無理じゃないかなあ
248 :
Now_loading...774KB :2011/05/02(月) 00:26:53.55 ID:ztpYLKg3
AS3.0です。 CS5の標準のNumericStepperコンポーネントについて質問です。 使用したくないときがあるので、enabledをfalseにしました。 そして入力できないようにはなったんですが、 コンポーネントをクリックすると、周りに枠?が表示されてしまいます。 これをなくすためにはどうしたらいいですか? ちなみに、tabEnabledをfalseにしてもダメでした。
>>248 NumericStepperについては知らんが、黄色い枠線が出るなら
focusRectにfalseを入れとくとか
>>250 focusRect=falseを試しましたが変わりありませんでした。
>>251 mouseEnabledをfalseにするとか
>>252 変わらないです。
ちなみに枠は水色です。
んじゃfocusEnabledで
当方NumericStepperが使えないためちょっといい加減なことを言いますが…… focusRectは配置されるコンテナではなく配置するコントロールの方に指定します で、ドキュメントを読んでみるとNumericStepperはDisplayObjectContainerから派生されています ひょっとして水色の枠はコントロール全体ではなくテキストフィールドの方に表示されていますか?
音声開始ボタンαを押すと、αだけ再生して現在流れてるその他βγの音楽全て停止させたいんですが stop();だけじゃまったく止まりません。これだけじゃ何故ダメなのでしょうか?
書き忘れましたがAS2.0です。
>>257 >>235 のを流用するけど↓でできないか?
on(Press){
_root.snd_A.stop(); _root.snd_B.stop(); _root.snd_C.stop(); // 止めたい音楽を全部止める
_root.snd_A.start(); // snd_Aの部分はボタンごとにsnd_Bなりsnd_Cなりに変える
}
上手くいかないのはたぶんパスの指定が違うか記述を間違えてるかだと思うんだけど_rootとかわかる?
_root┬MC製の再生ボタン(MC_A)
├MC製の再生ボタン(MC_B)
├MC製の再生ボタン(MC_C)
例えばこういう階層になっててsnd_A = new Sound();〜の部分を_rootに書いたなら
MC_Aにスクリプトを書くときはsnd_A.stop();の頭に_parent.とか_root.つけてsnd_Aがある正しいパスを指定しないと
MC_Aの中からsnd_Aを探す→なかった→停止できません ってなるぞ
見当はずれだったらごめん
>>256 drawFocus(false)としましたが、変化ありません。
コンポーネントを分解すると、表示されている枠があり、focusRectSkinという名前のムービークリップがあります。
でもそれを消しても何も変わらないです。
ローカルにある画像ファイルを画面に画面に表示させたい場合、 FileReferenceを使用して、画像をサーバにアップ後にそれをダウンロード して表示させるしかないでしょうか? 初心者です。
263 :
Now_loading...774KB :2011/05/02(月) 11:55:01.69 ID:xIuEBJ7p
FLVPlayback使って↓のソースで動いたのですが import fl.video.*; my_FLVPlybk.stopButton = my_stopbttn; my_FLVPlybk.playPauseButton = my_plypausbttn; my_FLVPlybk.muteButton = my_mutebttn; これをフレームのタイムラインに書くのではなく、外部asに書きたい場合 どこを直せば動くようになりますか? このまま書いても動かず、変数にstage.付けても動かずでした
>>261 NumericStepperを継承したクラスを作って、drawFocusをオーバーライドして関数の中で何もしないようにして
ライブラリのNumericStepperにリンケージしたら一応できたよ
>>264 エラーメッセージが出ないんです
再生されずにずーっと読み込み中になります
>>265 ありがとうございます。
なんかめんどくさそうですね。
再現できるようトライしてみます。
>>267 継承したクラスファイルつくって関数オーバライドして中になにも書かなきゃいいだけじゃない?
>>262 FileReferenceで取得したByteArrayをLoader.loadBytesに放り込めば
Flash内部だけでBitmapに展開してくれるよ
>>263 外部ってもどこからアクセスしたいかで書き方変わるから何とも言えないだろうけど
そのクラスからmy_FLVPlybkまでの親子関係などに応じて「this.my_FLVPlybk」なんて感じで
指定すればいいんじゃないか?
>>223 ですが
Iに
addSelf(container:DisplayObject):void
removeSelf(container:DisplayObject):void
を設定し、
AとBに
public function addSelf(container:DisplayObject):void{
container.addChild(this);
}
public function removeSelf(container:DisplayObject):void{
container.removeChild(this);
}
とすることで
var hoge:I //AクラスかBクラス
hoge.Iメソッド();
hoge.addSelf();
と一応実現することができましたが、
>>217 の
ある変数hogeがあるクラスAのサブクラスかつインターフェースIを実装していることを保証するにはどうしたらいいか
が分かる方いらっしいましたら引き続きお願いします
>>271 保証するって言い回しが良く分からんが、「class B extends A implements I」って形のクラスなら
普通に「var hoge:B」でAとしても扱えるしIとしても扱えると思うけど…
>>272 「class A extends S implements I」
「class B extends S implements I」
の二つのクラスが入る変数を
「var hoge:なんとか」で
SしてもIとしても扱いたい感じです
>>273 今ちょっとやってみたけど、「var hoge:S = new A()」ってやって
iにキャストしたらiのメソッド呼べたよ
class SS extends S implements I class A extends SS class B extends SS var hoge:SS; とか
AS2.0です。 あるMCをpressすると特定の音楽が流れ、且つその他の音楽が強制的に停止するようにしました。 ところが、テストをしたときの一回目のみその他の音楽が強制的に停止してくれません。 ダブルクリックしたり全停止ボタンを押したり等他の動作をしたら、きちんと特定の音楽だけ流れてくれます。 あるMCのASは on(press) { snd_A.stop(); snd_B.stop(); snd_C.stop(); snd_B = new Sound(MC_B); snd_B.attachSound("D"); snd_B.start(); } こんな感じです。一回目に動作が不安定なのはどうしてなのでしょうか。
>>276 snd_A〜Cまでが、定義されてないとか、参照が渡ってないとか?
他の部分まで見ないと、そこだけじゃ原因はわからんなー
とりあえずtrace()で、サウンドオブジェクトがあるのか
参照が正しいのかなどをチェックしてみては?
>>274 ありがとうございます
ちょっとやってみます
でもキャストかぁ
>>275 後だしで申し訳ないのですが、
A→S1→S2→…→S
B→SA→SB→…→S
のように別ルートを通ったすでに用意されているS1とSAをそれぞれ継承しています
S1=Bitmap
SA=MovieClip
S=DisplayObject
のような感じです
AとBはそれぞれIを実装することで共通のメソッドが保証されるのですが、
DisplayObjectContaimer.addChild(child:DisplayObject)
の引数にとるためにはDisplayObjectを継承してるよ、ってことも保証しなくてはならないので、どんなクラス(インターフェイス)の変数を使えばいいのか考えているところです
279 :
Now_loading...774KB :2011/05/03(火) 23:56:41.71 ID:kCRtwKm+
すいませんAS2.0で質問です。 よく文字列やハイスコアをTwitterに送信できるボタンがありますが、 それをAS2.0で実装するにはどうすればいいのでしょうか? 調べてもAS3.0ばっかりヒットするのでどうにもなりません。
280 :
Now_loading...774KB :2011/05/04(水) 00:14:22.92 ID:cGLk4JaC
AS3です。 1つのムービークリップXに対してaddChildとremoveChildを繰り返すような実装をしているのですが、 すでにaddChildされたかどうかを判定する方法がわかりません。 どうすればわかるでしょうか。
>>280 XにYをaddChildするとして
Yがaddされたか知りたいの?
Xがすでになにかをaddしているか知りたいの?
>>278 どのA〜SとDisplayObjectContaimer相当の内、どのクラスを自分で書いていて
どのクラスが編集不可なのかの情報をお願いします
284 :
Now_loading...774KB :2011/05/04(水) 00:23:04.89 ID:cGLk4JaC
>>282 どのムービークリップに対してというか、
ステージ上に作る感じです。
addChild(X)
とします。
addChildする前に、Xがすでにあれば、
removeChild(X)
をするイメージです。
>>284 DisplayObjectContainer.contains()とか?
>>283 Papervision3Dライブラリを使っています
MyClassA→MyClassAA(→ParticleField→Particles→Vertices3D→DisplayObject3D→DisplayObjectContainer3D→flash.events.EventDispatcher)
MyClassB(→Plane→TriangleMesh3D→Vertices3D→DisplayObject3D→DisplayObjectContainer3D→flash.events.EventDispatcher)
Papervision3Dには
DisplayObjectContainer3D.addChild(child:DisplayObject3D)
というDisplayObjectContaimer.addChild(child:DisplayObject)のようなものがあり、
このメソッドでレンダリングするシーンに追加します
MyClassAとMyClassBは派生は違うものの同じ種類の働きのクラスとして作り、
メソッドiMethod()を合わせるためにインターフェイス(IMine)を実装しました
これにより
var hoge:IMineで
hoge.iMethod()を実行できるようなったのですが
このhogeを使って
scene.addChild(hoge)
もしたいと考えております
>>287 scene.addChild(hoge as DisplayObject3D)とかではダメなの?
>>287 sceneというのが自分で書いたクラスだと仮定しますが、
IMineとDisplayObject3Dの両方のメンバにアクセスするのなら
両方(2つのパラメータで)渡すしかないでしょう
失礼しました、sceneはライブラリ側っぽいですね
IMineからほとんどの主要機能が呼び出せるようになっていて
MyClassAとMyClassBをブラックボックスとして扱うクラスに実装するなら
IMine型の参照だけを保持し、IMineにgetDisplayObject3Dメソッドを登録して
MyClassAとMyClassBが自分を返せるようにしてはどうでしょうか
>>288 で十分なような気もしますが
291 :
Now_loading...774KB :2011/05/04(水) 01:28:58.24 ID:cGLk4JaC
>>286 var h:TextField=new TextField();
trace(contains(h));
layer.addChild(h);
とすると、contains(h)は常にfalseで、
contains(layer.h)とした場合、
layer.hはnullではいけませんというエラーが出ます。
どうしたらいいんでしょうか。
layer.addChild(h); なら layer.contains(h) だろう
293 :
Now_loading...774KB :2011/05/04(水) 01:49:36.67 ID:cGLk4JaC
>>292 それが正しいですね。
ただ、traceの手前でaddChildした場合はtrueが確認できましたが、
>>291 の処理(ボタン処理です)を繰り返すと、falseのままでした。
>>293 >>291 を読む限り、TextFieldのインスタンスが毎回新しく作られてて
前回実行した時のhの中身とは別物なんだからfalseで当然
>>294 もういっそのことh.parentがnullかどうかで確認するとか
296 :
Now_loading...774KB :2011/05/04(水) 02:20:54.42 ID:cGLk4JaC
うーん、できないorz
>>294 前回実行したときのhを指定したいときはどうするんでしょうか。
>>295 containsと同様に常にnullになります。
>>296 newした時に必ずaddChildして、
removeChildした時に必ずnull代入するんじゃ
ダメなの?
>>291 のコードから
var h:TextField=new TextField();
を取り除いて、
この処理は一度だけ前段で実行してやると、
traceの結果は、
最初だけfalseで
あとはすべてtrueとなってくれました。
>>297 すいません。
ちょっと理解が追いつかないので、
わかりませんでした。
>>276 それ他のボタンも同じソースなのか?
snd_○○の頭に全部_root.つけてみたら
TextBlockを使用して、入力した文字を画面に表示させることをしています。 英語を入力したときは問題ないのですが、日本語を入力した場合、 各行の文字間隔が行の幅に自動的に調整されておかしくなります。 どのように変更すればよいでしょうか?ソースは以下になります。 ※なぜかこうなる? あああああああ あ あ あ あ あ ※こうしたい あああああああ ああ あああ
var str1:String = m_cDlgMenuText.m_strMsg;//表示メッセージ //フォント書式 var fontDescription:FontDescription=new FontDescription(); fontDescription.fontName = m_cDlgMenuText.m_strFont; //エレメントのフォーマット var format:ElementFormat = new ElementFormat(); format.locale="ja"; format.fontSize=m_cDlgMenuText.m_nStrSize; format.fontDescription=fontDescription;
//テキストエレメントを作る var textElement1:TextElement=new TextElement(str1,format); //テキストブロックを作る var textBlock:TextBlock = new TextBlock(); textBlock.textJustifier=new EastAsianJustifier("ja",LineJustification.ALL_BUT_LAST); textBlock.lineRotation = TextRotation.ROTATE_0; textBlock.content=textElement1; var block_width:Number=300; var textLine:TextLine=textBlock.createTextLine(null,block_width); var xPos=m_cStartPoint.x; var yPos=m_cStartPoint.y; while (textLine != null) { m_cSprite.addChild(textLine); textLine.x=xPos; yPos+=textLine.height+8; textLine.y=yPos; textLine=textBlock.createTextLine(textLine,block_width); }
タイムラインを使わずに音楽の現在の再生時間を表示させる事はできますか?
>>296 クラス内に変数用意して、そこに入れておくしかないんじゃない?
複数あるなら配列に入れて、containsで調べる時はループ回すとか
クラス内でpublicやprivateのメソッドの記述する順番って決めてる? イベントハンドラは最初、とか
50音順にしてる。
ねーよw
313 :
312 :2011/05/04(水) 20:20:54.82 ID:ZfGnraPg
>>313 コンストラクタの中にあるEmbedを外に出せばいいと思う
>>314 ありがとうございます
コンストラクタの外に出し、
Mat_Color.jpgのアンダーバーも抜けていたので直しました
しかし「FlexSDKが必要となります」というメッセージと
DaeSample_dae_image.as、行 10 1017: 基本クラス BitmapAsset の定義が見つかりませんでした。
E:\flash\collada読み込み\新しいフォルダ\DaeSample.as、行 1 5000: クラス 'DaeSample' は 'flash.display.MovieClip' をサブクラスとする必要があります。同じ型のライブラリシンボルにリンクしているためです。
というメッセージが出てしまいました
FlexSDKとはなんでしょう?FLASH CS5だけではだめなのでしょうか
画面の指示に従いFlexSDKパスを追加したところ、エラーは出なくなり
swfファイルも出力されました
http://freett.com/c4dbeginner/DaeSample2.swf >>312 のファイルは113kb、今回のは154kbなので
Colladaが読み込まれたのかな?と期待したのですが
Mat_Color.jpgとsample.daeのないフォルダでDaeSample2.swfを再生すると真っ白になってしまい読み込まれていません
Mat_Color.jpgとsample.daeのあるフォルダでDaeSample2.swfを再生すると数字の書かれた赤いさいころが出るのですが…
何が間違っているのでしょう?
>>317 埋め込んだの使って無いじゃん
「Flash embed mp3」とかでググってみるといいかも
mp3の埋め込みでも基本は同じだから
320 :
Now_loading...774KB :2011/05/05(木) 01:38:33.15 ID:otq5z3k5
videoクラス(FLVPlayBack使わない)でビデオプレイヤー作ってるんだけど .bytesTotalがどうしても取得できない、bytesLoadedは取得できてて、合計時間や現在の再生フレームなんかも取れるのに どうしてもbytesTotalだけが取れない ぐぐってサンプル見つけてもエラーで動かなかったり、取得できなかったりしてます bytesTotal取れるお手本教えてください(FLVPlayBack使わない方法で) 本当に簡単なやつでいいですので、それだけ教えてください、もう4日も悩んでます、お願いします
321 :
320 :2011/05/05(木) 01:39:45.70 ID:otq5z3k5
FlashCS4 AS3.0です
AS2.0ですが、BGMが最後まで行くと停止して最初に戻りたいのです。 ただしBGMはMCをクリックして鳴らすためタイムライン上でthis.stop();とかは出来ません。
323 :
Now_loading...774KB :2011/05/05(木) 06:23:03.24 ID:TIb/sfcK
バナーゼストというソフトで作ったswfファイルを複数用意し、メインswfのボタンで呼び出して読み込ませたいのですが、どういう訳かインスタンスを指定すると呼び出せません。 とりあえず以下のサイトの手順でやってみたのですが、やはりインスタンスが指定出来ません。
324 :
つづき :2011/05/05(木) 06:25:05.33 ID:TIb/sfcK
>>320 対象の動画をもう一度作り直す事をオススメするかな。
動画エンコ時にメタデータミスって値がおかしくなるのはよくある。
326 :
312 :2011/05/05(木) 08:39:49.46 ID:AZr/wVp2
327 :
312 :2011/05/05(木) 08:43:16.58 ID:AZr/wVp2
328 :
Now_loading...774KB :2011/05/05(木) 09:41:09.13 ID:ERj/4a3I
行 xx 1046: 型が見つからないか、コンパイル時定数ではありません : Hoge。 行 xx 1180: 未定義である可能性が高いメソッド Hoge の呼び出しです。 Hogeクラスをインポートせずに使おうとすると出る
>>323 全然いみわからん
言語は2.0?
>やはりインスタンスが指定出来ません
インスタンスを指定するとはどういう意味か swfを読み込む先?
指定できないとはどういう意味か エラーメッセージが出るのか思ったように動かないのか
外の方法?フレーム表示のように?
とりあえずurlとまったく同じように作ってみたら?
swfもサンプル使って
んで次にバナ−ゼストのswfと差し替えてみる
>>310 まじめにこたえてください><
なんか決まりというか定番ないのかな
自分の中でルール決めるにしても一般的な指標がほしいな
ゲッセッター
イベントハンドラ
private
public
332 :
312 :2011/05/05(木) 10:41:38.83 ID:AZr/wVp2
>>328 312です
アドバイスありがとうございます
ということはこの場合は「Bitmapクラスをインポートする必要がある」ということでしょうか
http://rakuda-factory.sakura.ne.jp/tips_pv3d_1.html このページでは特にそれについての記述はないようですが
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.MaterialsList;
以外に何をインポートすればいいのでしょうか
もう少しヒントをください
お願いします
型が見つからないって言ってんだから、とりあえずそれっぽいの一通りインポートしてみたらどうだい。
>>332 だってそのページにはpapervisionのクラスのimportだって書いてないじゃん
そこまでわかってるなら「Bitmap」クラスの「完全修飾クラス名」調べてimportするだけなんだが
クラスファイル内で同ディレクトリにない他のクラスを使うには全部インポートしなくちゃいけないんだよ
ActionScript3.0の基本をもうちょいしっかりやったほうがいいかも
CS5使ってんならflashdevelope使うとかなり便利になるよ
>>322 bgm = new Sound();
bgm.attachSound();
bgm.start();
bgm.onSoundComplete = function(){
bgm.start();
};
パスの指定は自分で変えてね
とりあえずそれはdisplayクラスをインポートしているわけじゃないんだぜ Mat_Color.jpgは消しちゃった? 見れない
>>339 displayパッケージのクラスを全部インポートするよって意味
まあそれでBitmapクラスは使えるようになるから大丈夫
たしかに埋め込みはできているけどポリゴンには適用されていないね
ためしにMat_Color.jpg→Mat_Color1.jpg
にしてasファイルのEmbedもそれに直してコンパイルすると
同じフォルダにあってもワイヤーフレームになる
dae開くと
<library_images>
<image id="ID5">
<init_from>tex/Mat_Color.jpg</init_from>
</image>
</library_images>
ってあるから、つまりdae側でマテリアルのjpgを指定している状態だから
埋め込み画像を使っていたわけじゃないんだね。
もうちょい調べてみる
ありがとうございます!
>>343 ありがとうございます!
何度も質問してすみませんでした
他のアドバイスいただいた方もありがとうございました
もう一度基本から勉強して今後はご迷惑かけないよう頑張ります
var dae:DAE = new DAE( XML(new ndae)); これを こう直したところ警告も出なくなりました var dae:DAE = null; dae = new DAE(false,"",false); ありがとうございました!
>>330 ,335
ありがとうございました!
更に質問なんですが、一時停止と再生のボタンをつくていてうまくいきません。
音楽のインスタンス名はsoundです。
一時停止ボタン:A
on (release){
pause_point1 = root.sound.Sound.position;
_root.sound.stop();
再生ボタン:B
on (release) {
_root.sound.start(pause_point1 /1000);
pause_point1=0;
}
一時停止はするんですが、再生ボタンを押したら最初から再生してしまいます。
どこが間違っているのでしょうか。
>>346 「as2なら」一時停止はpause()だったはず。再開もpause()なので注意
>>347 ありがとうございます。
pause();は初耳で使い方がよく分からなかったので、stopの代わりに入れたりon(release){pause();}
にしてみたりしたんですが止まらないのは、何か書き忘れでしょうか。
>>346 ボタンAの2行目は
pause_point1 = _root.sound.position;
あとボタンがMCならpause_point1にパス入れないとダメ
都知事と同じ名前の
>>348 ああ、他にもいくつか間違ってるな。一応こうすれば動くことを確認した。
フレームアクション
var pause_point1= 0;
var sound = new Sound();
sound.attachSound(サウンドのリンケージ名);
停止ボタン
on (release) {
_root.pause_point1 = _root.sound.position;
_root.sound.stop();
trace(_root.pause_point1);
}
再生ボタン
on (release) {
_root.sound.start(_root.pause_point1 / 1000);
_root.pause_point1=0;
}
ActionScriptって何のツールで開発してますか? お金ないからFlashDevelopで勉強してますが、実際の開発現場では 何のツールが主流なんでしょうか。 やっぱりFlashProfessional買わないとダメですか?
絵がかけることとコンポーネント以外にメリットないんじゃね WebサイトつくるならadobeCSだろうな
>>352 まぁ開発要件に拠るわね
どんな仕事とるかも会社によって違うだろうし
355 :
175 :2011/05/05(木) 20:26:57.28 ID:e3134Z8X
>>355 この例において、画像のURLに含まれる
/image/
というディレクトリの名称はどこから得るのだろうか。
「それを得る方法を知りたい」のであれば、答えは「出来ない」。
通常、サイトのディレクトリ設計を行い、読み込む画像のディレクトリを
固定し、そのパスをスクリプト内に定数として設定しておくと良いだろう。
蛇足ながら、特にベースをいじらなければ、相対パスは
「htmlのある位置」を起点に昇り降りする。swfの位置ではない事に注意。
>>352 自分の場合、スクリプト書きだけなら、FlashDevelop一択。
コンパイル(パブリッシュ)はFlashの製品を使う。
ただ、Adobeの提供しているSDKにコマンドラインのコンパイラが
含まれてなかっただろうか? それを使えば無料のはず。
俺自身は、そんな不便なものを使うなら、何万円か払ってでも
製品を買う方を選ぶが。
>>356 回答ありがとうございます
> /image/ というディレクトリの名称はどこから得るのだろうか。
どこからも得られそうに無いので困っていますが、
>>175 の通り
ロードが成功するとloaderInfo.urlにフルパスが入っています
WindowsAPIで言うところのGetCurrentDirectoryが返すような値が
プラグイン側になければ不可能なはずですが、何とか取得できないでしょうか
>>358 HTMLにどんなコードが書かれていても関係なくアクセス先を求めたいので
HTML側との通信はあまり視野に入れていません
サイト構成を自分で構築できるのなら全部固定にしておく方が早いです
Flashプラグインが相対パスから絶対パスを求めるための基準にしているベースパスが取得したいのです
AS3でhogeフォルダのhageクラスとhigeクラスを参照するとき import hoge.hage; import hoge.hige; と書いていたのを import hoge.*; と書くようにした場合、(hogeフォルダに他にいくらかのasファイルが存在するとして) 処理速度や実行ファイルのサイズなどに違いは出るでしょうか? それともコンパイル速度に影響を与える程度でしょうか?
363 :
Now_loading...774KB :2011/05/06(金) 10:06:48.92 ID:vtdX+OXQ
CS4 使ってますが、突然、オブジェクトを作成するときに線だけになりました。 あとからの塗りつぶしも出来ないのですが、原因わかりますでしょうか? バケツをドロップすると鍵マークになります。 オブジェクトの吸着や、塗りの / 線などもチェックはしています。
>>362 必要なクラスだけコンパイル時にimportされるから実行時には問題ないらしいよ
ENTER_FRAMEイベントってどこに割り当てても一緒だよね
クラスのオブジェクトにdispatchする必要なくない?
ぜんぶstageとかでいいじゃん
>>364 レスありがとう
そうするとワイルドカード(*)を使用した方がコードも短くなるし面倒も無い感じですよね
ネットのソース色々見ててわざわざクラス一個毎にインポートしているコードが多かったので
なんでかなーと思って…明示的にして分かり易くするためなのかな
余計なの読み込むよりは軽いんじゃね
と思ったけど、上で書いてたけど仕分けしてくれるのか。 ただ書き方悪いのか*だとダメな時もあるなぁ。
>>367 俺もある
余談だけど、今直面してるのは、テストでうまく行ったソースを組み込んだら
エラー吐かずに動作はするけど、期待した通りの動きにならず、
traceしたらその直前で止まってる
前にもあったけど、別のPCでやると問題なくうまく行く時とかもある、なんだこれ?
369 :
sage :2011/05/06(金) 17:39:51.28 ID:ula54H3j
すいません!fl.controls.DataGridについて教えてください。 IDという名前のカラムを上から順番になめて、IDが同じだったら その行の値を更新する、という処理が記述したいです。 特定の行の値を修正するメソッドはeditFieldでできる事が分かったのですが・・・ getItemAt(0)とか、toArrayとか試してみましたが、どれも中身が空っぽで 値が取得できません・・・
371 :
Now_loading...774KB :2011/05/06(金) 20:44:39.08 ID:8DNmHXfr
FLASHcs5なんですが、 AIRの終了からの起動の動作のテストをするためには、 実際にAIRアプリにしてインストールしないとダメなんですか。
>>368 Flashはシングルスレッドだけど、ファイルの取得やら展開やらを任意のタイミングで行えないから
実行するたびにイベントが発生する順番が前後になったりする。
ある端末では展開の方が速く、別の端末ではタイマー系イベントが早いとか、
そもそも展開自体が順不同で完了したりするんで、そういうのを確認できるテストコードを埋め込んでみたら?
あとはFlashのバージョンが違うとかメモリ不足とか
373 :
Now_loading...774KB :2011/05/06(金) 23:51:06.97 ID:Z9kFvpCe
auのFlashLite2.0携帯からloadVariables関数を実行して外部通信できずに困っています。 auのFlashLite3.0やDocomoのFlashLite3.0携帯では同ソースで外部通信が成功しているのですが auのFlashLite2.0の環境から通信するとHTTPサーバーへのリクエストも飛ばずにエラーとなります。 auFlashLite2.0機種でも、外部通信以外のプログラムは正常に動作しておりloadVariables関数のみが動きません。 数機種試して貰ってるのですがFlashLite2.0対応の全てのau機種でloadVariables関数が動きません Device Centralのエミュレーター環境では「FTPA003 loadVariables は無視されます。」というエラーが表示されます。 実機で試して貰ってもauの2.0機種では通信できずにアプリが止まります。
>>374 続き
「
http://emor.in/dev/?p=706 」を参照して次の対応をしているのですがloadVariables関数が動きません。
・FlashLite3.0までは勝手にパケット代が加算されないように、ユーザーがボタン操作した時じゃないと
Flashから外部サイトにアクセスできない制限がある。なのでonKeyDownイベントの中に1度だけloadVariables関数を実行しています。
・loadVariable関数のターゲットは「_root」にしGETで投げる。
・PHPでは「header("Content-type: text/plain");」でデータを返してますが、HTTPサーバの
ログにloadVariablesのリクエストが来てる形跡がありません。
auで外部通信する場合の留意点やサンプルソースがありましたら教えてください。
>>374 続き
環境:FlashLite2.0(ActionScript2.0)、FlashDevelop+FlexCDK
ソース部分
var myListener:Object = new Object();
myListener.onKeyDown = function() {
_root.onData = function() {
trace(_root.sgf); //通信が成功した場合の処理部分
}
loadVariables(sgfurl, _root, "GET"); //sgfurlは外部アクセス先
}
Key.addListener(myListener);
377 :
Now_loading...774KB :2011/05/07(土) 18:34:52.97 ID:LiQcYL4Y
ムービーだけもってこられても…
380 :
320 :2011/05/08(日) 02:17:34.50 ID:0v5J1vC5
AS3.0 cgiとかのURL(.php?file=hoge.m4vとか)でアクセスしたら.m4vとか.flvとかのデータが飛んでくるんだけど、 これをFLVPlaybackやvideoクラスで再生するにはどうしたら出来ますか? 現在はファイルそのもののURLなら再生する事が可能な状態です。 ちなみにファイル直リンクURLはわかりません。 また仮にこれを再生出来たとして、どこから飛んできてるかURLを取得する事ができますか?
381 :
320 :2011/05/08(日) 02:19:50.93 ID:0v5J1vC5
>>325 ありがとうございました、遅くなりましたが解決しました
以前レスいれたと思ったのに入ってなかった、申し訳ない
382 :
377 :2011/05/08(日) 04:53:43.78 ID:fgUvCI6M
383 :
Now_loading...774KB :2011/05/08(日) 17:59:03.36 ID:KVw4LRtD
actionscript3.0で、XMLについてなのですが <root> <aaaa> <title>title1</title> <bbbb> <c1>111</c1> <c2>222</c2> </bbbb> </aaaa> <aaaa> <title>title2</title> <bbbb> <c1>333</c1> <c2>444</c2> </bbbb> </aaaa> </root> このXMLの111の値を取りたくて trace( xml.aaaa[0].bbbb.c1 ) とやってみたのですが、結果が <c1>111</c1> となってしまいます このc1タグを取り外して中身の111を扱いたいのですが、どのようにすればタグを外せるのでしょうか? また trace( xml.aaaa[0].title ) とすると title1 と中身だけが出てきたのですが、このタグが付く・付かないの違いはなぜ起こるのでしょうか?
>>383 普通に111だけとりだすはずだけどなあ?
XMLノードの表現出力する場合は、trace( xml.aaaa[0].bbbb.c1.toXMLString())だけど。
その辺ちゃんと階層構造になってないんじゃね?
他のXMLパーサに読み込ませてXML的に合ってるか確認してみたら?
>>379 AUのFlashLite2.0でloadVariablesが無理というのはどこかに情報載ってますでしょうか?
自力検証した結果ですか?
FLEX4で、for文で1000回ループする処理があるんですけど、 処理に時間がかかるんで処理中は画面が音沙汰なしになります。 そこで、Labelに何回目のループかを表示させようとしたら、 ループを抜けたときにだけ表示されてしまいます。 ループ中にも画面反映するには、どうやればいいんでしょうか?
>>385 今公式見てみたら、loadMovie()/loadVariables()で読み込みできるのはswfのみってなことが書いてあったけど
そこら辺の問題じゃないのか?
>>386 ループ抜けるまでは、描画処理は更新されないから無理じゃね?
ループを分割するとか、別の方法で
389 :
380 :2011/05/08(日) 19:20:38.45 ID:0v5J1vC5
再度videoクラスで確認したところ、videoクラスで組んだものは正常に再生でき、 FLVPlaybackで組んだものは再生されずに止まってしまう事を確認しました FLVPlaybackで再生する方法ありませんか?
390 :
386 :2011/05/08(日) 19:24:30.49 ID:r8zymY7s
>>388 ありがとうございます。
やはりループ内の再描画なしですか。別の方法を考えます。
flashのステージ上に配置されている全てのインスタンスを AcrtionScriptで取得する方法はありますでしょうか? box2Dでステージ上のインスタンスのサイズや座標を元に box2Dのワールドに物体を配置することを考えています。 この考え方自体非効率的なのでしょうか?
392 :
Now_loading...774KB :2011/05/08(日) 20:18:27.50 ID:rnW6SjPC
聞く前にやってみろよそんなもんアホか
現在インスタンス名を直打ちで指定し座標とサイズをスケーリングしbox2Dのワールドに配置しています。 この方法では今後いささか冗長と思われるので、代替する方法を模索しているというのが本来の趣旨です。
>>388 これ地味に辛いよね、プログレスバーやローディングアイコンも更新できなくて
ループで回してるならまだ「時間経過を見て長すぎたらタイマー予約して一旦処理を返す」
とかできるけど、Loader.loadBytesで巨大なテクスチャを不特定多数展開しようとなると
一度に何枚まで実行していいか判断に困る
395 :
Now_loading...774KB :2011/05/08(日) 21:31:57.96 ID:CFFCjETR
cs5のair2なんですけど、 インストーラで発行者IDという項目が不明となるんですが、 どうすればIDをつけられるんですか? ヘルプを見ましたが設定すべき項目がどこかわかりませんでした。
javaのfinalのように、constは参照の変更を禁止するだけですか? 自分で試したいんですが、まだどんなクラスがあるのか全くわからないので...
変数の指してるメモリアドレスって実行中取得できる?
>>399 そっかthx
ほんとにちゃんと同じもの指してるのかとかtraceしたかったんだが
===とか使うしかないのか
>>383 同じアプリの開発中にもタグがついたりつかなかったり変わる。
原因は今のところ不明。
xml.aaaa[0].bbbb.c1.toString() で目的の表示になると思う
onClipEventイベントハンドラを使いたいのですが、記述場所がわかりません。 main関数の中に記述すれば良いのでしょうか?下記記述ではコンパイルエラーになってしまいます。 class test { static function main() { onClipEvent(keyDown) { trace("test"); } } } 環境:FlashLite2.0(ActionScript2.0)、FlashDevelop+FlexCDK
>>402 onClipEventハンドラは、インスタンスに書くんだよ
AS2.0なら敢えて使う必要はないと思うが、何か理由があるの?
AS2.0なら、かわりにonMouseDownとかなんかそんなのがあったはず
>>403 >>376 のloadvarsがau端末で動かない原因が、ボタンインスタンスのイベントに記述していないから
ではないかと予想しているのですが、asファイル中からのボタンインスタンスの作成方法が分りません。
現在はMovieClipに画像を読み込んでボタンライクに利用していますが、FlashProfessionalで言うところの
「シンボルに変換→種類:ボタン」にあたるActionScriptの書き方及び、インスタンスへのイベントの挿入方法
はどのように行えば良いのでしょうか?
実際に使いたいのは「on (release)」イベントですが、まずは「onClipEvent」イベントが動作するかを
試しています。
as3からsoapを呼び出したいのですが、どのようにすれば良いのでしょうか? webserviceというクラスがありますが、情報が少なく使い方がわかりません
MovieClipがアニメーションしなくて困ってます。以下の手順で再現 1. 新規flashドキュメントを作成。 2. 画面左上に100x100ドット程度の四角を描画。それをシンポルに変換し、名前を Symbol1、インスタンス名を obj1とする 3. タイムラインの2フレーム目を右クリックし、「キーフレームの挿入」を実行。obj1 を右下に移動 4. 保存して実行。obj1が 左上<=>右下 と交互に高速に移動し続けている事を確認
407 :
Now_loading...774KB :2011/05/09(月) 21:50:09.83 ID:lLIlGksU
(つづき) 5. 実行を終了し、タイムラインの1フレームを右クリックし、アクションをクリック 6. 1フレーム目のコードとして "obj1.width = 1;" を記述する 7. 保存して実行。obj1は縦長の線になり、左上で停止している。 期待する動作は、手順7において、obj1が縦長の線のまま、左上<=>右下 と移動する事です。 環境は Windows版 Cs5です。よろしくお願いします。
408 :
380 :2011/05/10(火) 11:27:54.03 ID:CoxDP2y+
自己解決しました
Device CentralのエミュレートでSWFのURLを直接開いたのに、インタラクティブモードで開くことができません。 コンテンツタイプはブラウザになっています。 ステージにボタンを作り「Selection.setFocus」でボタンにフォーカスをあてています。 FlashProfessionalCS5から「制御→ムービープレビュー→Device Central」からSWFを開くと ボタンにフォーカスがあたっているので、そのまま決定キーでボタンが動作します。 このプロジェクトからSWFを作成して、Device CentralからSWFのURLを直接開くと ボタンにフォーカスはあたっているのに決定キーが利きません。 画面を一度クリックしてからボタンにフォーカスを合わせ直すとボタンが有効になります。 FlashProfessionalCS5からの制御で開いた場合と同じ状態でSWFファイルを開けないでしょうか?
>>409 原因が分りました。Device CentralのメニューからURL開くでWeb上のSWFを開く場合と、
ファイル開くで直接SWF開いた場合は同じSWFでも動作が異なるようです。
>>376 の外部通信も直接SWF開く方法で上手くいきました。
それぞれの違いが不明ですがこれで1週間以上はまりました・・・
Flash Builder 4.5の試用版を ダウンロードしたのですが、 Subversionのクライアントの機能は 追加で入れる必要があるようです。 Flash Builder 4 の時には、Subclipseをインストールしましたが、 Flash Builder 4.5でも同じやり方でいくでしょうか。 既に試されたかたがいたら教えてください。 よろしくお願いします。
412 :
Now_loading...774KB :2011/05/11(水) 00:18:20.90 ID:ONK+GUND
AIRのデスクトップアプリを作っているんですが、 アルゴリズム?的なところでわからないところがあるので 助言ください。 ユーザが1日に1回実行できる処理があります。 この処理を、最後に実行してから2日以上経過した後に、実行した場合、 最後に実行してから前日までの年月日を記録します。 例:処理を2011/3/21に実行。その後、2011/3/25に実行。 間の3/22〜24を記録する。 日付はOSからとっています。 ここでOSの日付を未来に変更することによる処理の実行を区別するにはどうしたらいいでしょう。 上の例で言えば、3/21に処理を実行し、 直後にOSの日付を3/25に変更し実行する処理を、本来の場合と区別したい。 ローカルデータベースは持っています。 よろしくお願いします。
ネットワークから日付とってきたら?
414 :
412 :2011/05/11(水) 00:24:06.51 ID:ONK+GUND
補足です。 アプリは常に起動しているわけではなく、 自由に終了したり起動したりできます。 当然ですが、終了したら時間を監視したりということはできません。 また、ネットへの接続なしでも動作する仕様ですが、ネットに接続する仕組みは持っています。
>>413 すみません。
ネットに接続せずローカルで対処する方法はないでしょうか?
>>415 こういうのは目的によって実装が異なるかも
テスト目的ならいくらでもやりようがあるだろうけど、
タイムカードの不正防止みたいな物を堅牢に作ろうとするのなら
ローカルだけでは難しいかもね。
>>416 フリーのアプリなんで堅牢である必要はないです。
3/21に処理を実行して、アプリを終了せずにOSの日付を変更した場合の処理を区別したいってこと? それならTimer使えばいいと思うけど。 アプリを終了したあとも区別したいっていうならネットワークから取ってくるしかない。
419 :
Now_loading...774KB :2011/05/11(水) 18:20:51.19 ID:v2LBBkF1
AS3で、ご質問です。 どのクラスからも参照できるGlobalクラスについてです。 ------------------------------- フォルダ構造は以下のとおりです。 Global.as viewフォルダ uiフォルダ となっており, uiフォルダの中に、 NextBtn.as というクラスを入れてあります。 ------------------------------- NextBtn.asから、Global.asがもつpublic関数(例えばhoge()とします)を実行したいとき、 Global.hoge();としても、実行できません。 それは、Global.asとNextBtn.asが同じ階層に無いから、 なのはわかっているのですが、 では、このように階層が違う場合、 どのようにして書けばよいのでしょうか。。 ご存知の方いらっしゃいましたら、 何とぞよろしくお願いいたします。
import Global; そもそもNextBtn.asにパッケージ名つけてなさそうだけど
421 :
Now_loading...774KB :2011/05/11(水) 19:40:58.60 ID:v2LBBkF1
>>420 さん
ありがとうございます!動きました!
教えてくださったことプラス
Global.asがもつ
staticな関数の中で使っている変数を
staticにしていなかったのが原因のようでした。
本当にありがとうございます!
var Vec:Vector.<Object>= new Vector.<Object>[ { a:new Vector.<Object>[ {x:0,y:0}, {x:0,y:0} ], b:{x:0,y:0}, c:{x:0,y:0}}, { a:new Vector.<Object>[ {x:0,y:0}, {x:0,y:0} ], b:{x:0,y:0}, c:{x:0,y:0}}, ]; 質問です。上のコードを新しいドキュメントの1フレーム目に記述しプレビューすると 「VerifyError: Error #1058: 無効なオペランド型 :* は String でなければなりません」 というエラーが出てしまうのですがどこが間違っているのでしょうか?
要素削ってどこでエラーくらってんのかくらい見つけようぜ
>>422 var Vec:Vector.<Object>= new Vector.<Object>([
{ a:new Vector.<Object>([
{x:0,y:0},
{x:0,y:0}
]),
b:{x:0,y:0},
c:{x:0,y:0}},
{ a:new Vector.<Object>([
{x:0,y:0},
{x:0,y:0}
]),
b:{x:0,y:0},
c:{x:0,y:0}}
]);
airアプリケーションを作ってます 起動時にアプリケーションのアイコンをクリックしても複数起動はできないようでした。 複数起動可能なアプリケーションを作るにはどうしたらいいでしょうか。 ググってみるとapplication.xml を書き換える事で対応できるらしいけど、その場合、 起動したい数の分だけインストールする必要があると思います。そうではなく、1回だけ インストールして、リソースが許す限り10個でも20個でも起動できるようにしたいです。
426 :
Now_loading...774KB :2011/05/13(金) 01:35:08.30 ID:ly9l5k3D
質問です。 AIRアプリで、起動するとシステムトレイにアイコンを表示するようにコードを書いているのですが、 Flash上でデバッグする場合、きちんと動作しますが、 airアプリにパブリッシュした後にインストールすると、 システムトレイにアイコンが表示されません。 何度か試していて、 最初は正常に動いていたんですが、 気づいたらアイコンが表示されなくなっていました。 PCを再起動しても変化ありません。 原因がお分かりの方がいたら教えてください。
例えばAというメインクラスがあり、メソッドが1000個記述されています。 この中で頻繁に使うメソッドは1つだけなので999メソッドを別のクラスBに分けたとします。 メインクラスAから必要に応じてBのインスタンスを作って利用した場合、 Aに全てのメソッドが存在する場合よりメモリの節約になりますか? 999メソッドはAの初期化時にコンストラクタでしか利用せず、その後は一切利用しません。 メモリがシビアな状況になってるので上記手法でメモリの節約ができるかを知りたいです。
win7、cs5を使用しています。配列アクセス演算子がうまく使用できず悩んでいます。 例) var Sansyou:Object=_Mainins;//参照を受け取る var hoge:Object; hoge="Skill_Flg[1][0]"; trace(Sansyou.Skill_Flg[1][0]);//→Skill_Flg[1][0]の中身0が表示される trace(Sansyou[hoge]);//→undefinedになる Sansyou[hoge]のように、配列名をhogeに入れて配列の中身にアクセスしたいのですがうまくいきません。 ドット演算子だとアクセス可能なのですが、配列アクセス演算子だと失敗してしまいます。 なにか根本的に間違いがあるのでしょうか?
>>427 一回でも使う以上ロードされるんじゃん
メインクラスのコンストラクタで999のBを作って実行→もう使わないのでBを破棄することで999メソッドをメモリから外せるかってこと?
>>428 hoge="Skill_Flg[1][0]";
は配列名じゃなくね
hoge="Skill_Flg";
trace(Sansyou[hoge][1][0]);
ではどう?
>>429 できました!配列アクセスってそういうことだったんですね、手間かけさせてすみません、ありがとうございます。
431 :
Now_loading...774KB :2011/05/13(金) 13:43:41.97 ID:/C0m4WLm
イベントリスナーでエンターが押された時を取得したいんだけど addEventListener(ここに何て書けばいいですか? 先日ぐぐって見つけて、うまく動いてたんだけど、間違って同名の他のasを上書きしちゃったんです GACがご臨終になってて、おそらくそこで見つけたんだろうと思うんですが それ以来2度と見つけられなくて困ってます
>>432 キーコード取得してって感じじゃなくて、エンターキーのみでいいの
それまでキーコードでうんたらかんたらしか出来ないと思ってたんだけど
その時見つけたコードでやったら簡単にエンターで実行できたんだよね
だからやりたいのはこれじゃないです
知るかヴォケエエエ!
んなもんねーよ!
>>431 でお前の望む情報が得られると思うか?
>>434 それがあるんだなぁ
ほんとにスグレモなコマンドなんだけどなぁ、知らない?
もう少し詳しく書くとaddEventListener(ここに書くコマンドが知りたい
テキストインプットなんかにフォーカスがある時にエンターを押すと
イベントリスナーに指定したファンクションに飛ぶ
>>429 そうです。
インスタンスを破棄しておけばソース分のメモリが節約できるのかなと思ったのですが
Flashの場合はどうなんでしょうか?
SWFが実行されている間はSWFのどこにメソッドが入っていてもメモリの使用量は変わらないのでしょうか?
>>436 インスタンスの変数にnull入れておいて、そいつを参照してる変数とかが無ければ
ガベージコレクタが動作した時にメモリが解放されるんじゃないかな
438 :
Now_loading...774KB :2011/05/13(金) 17:02:32.57 ID:aHtLubF+
>>434 の発狂にワラタ
>>436 うーん。もともとクラスAのインスタンスa1,a2があったとして
Aのメソッド、a1のメンバ変数、a2のメンバ変数
がメモリにロードされるんだよね
プロパティはインスタンス分、メソッドは1つなわけだ
a2がGCに削除されたらa2のメンバ変数はもちろん解放されるよね
んでa1が削除されたときにa1のメンバ変数は解放されるけどAのメソッドはどうなんだろうね
もう使わないからって消されるんだろうか
ってことだよね。俺はわからんけど
メソッドを一つのクラスにまとめた場合と2つのクラスに分けた場合で 実際にメモリ使用量が変わるか実験してみました。 クラスAのメインメソッドが終了した時点でクラスBのインスタンスを次のように削除しました。 delete obj_b; obj_b=null; これをやってもクラスを一つにまとめた場合と変動はありませんでした。 ただしクラスインスタンスではなく、グローバル変数に持っていた値をnullした場合は メモリ使用量が減り、マニュアル通りにメモリが開放された動きをしています。 _root.test=null; インスタンスは削除してもメモリ使用量減らないのかなぁ。 ちなみにガベージコレクションのインターバルである60秒を経過しても クラスインスタンスのメモリ領域は開放された気配がありませんでした。
>>439 Flash Player はメモリをある程度の塊でもらってきて
足りなくなったら GC 対象のオブジェクトが使っていた領域を使える状態にするから、
メモリを酷使するような処理をしないとなかなか解放されない。
あと、GC のインターバルが 60 秒って情報はどこからか詳しく。
442 :
Now_loading...774KB :2011/05/13(金) 21:31:12.58 ID:aHtLubF+
三重ループをbreakで一気に抜けるにはどうしたらいいのん?
>>442 ループラベル。
manko: for (var i:int = 0; i < 2; i++) {
chinpo: for (var j:int = 0; j < 2; j++) {
break manko;
}
}
444 :
Now_loading...774KB :2011/05/13(金) 21:40:31.44 ID:aHtLubF+
>>442 breakステートメントの説明に普通にあったわ
よく調べず質問してごめんなさい
ありがとう!
break chinpoじゃなくてよかった
445 :
Now_loading...774KB :2011/05/13(金) 22:19:24.51 ID:aMf43Xo+
connect(); // NetConnectionでサーバに接続する関数 initStream(); // NetConnectionのNetStreamを作成する関数 みたいなコード書くと、 NetConnectionが、RTMPサーバに接続完了する前に initStream()が呼ばれてしまうんだが、どうしたらいいんだろう。
446 :
426 :2011/05/13(金) 22:25:29.74 ID:ly9l5k3D
>>445 NetStatusEventクラスは?
>>446 Airの事が全然分からないまま知ってる事だけ答えると、システムトレイのアイコンってのは
登録に時間がかかる場合、失敗する事がある。特に起動時なんかは色々な重いソフトの
起動と重なる事もあるので、環境によっては失敗する事も結構多いみたい。
これを回避するためには失敗時のリトライ処理が必要で、詳細は以下のページに書いて
ある通り。
http://support.microsoft.com/kb/418138/ja ただ、これは一般論であって、最初に言った通り、Airの場合に当てはまるかどうかまったく
分からないので参考になるかなー
449 :
Now_loading...774KB :2011/05/14(土) 06:29:31.49 ID:Fl1lu4sD
ドキュメントクラスのみでスライドショーを作ったのですが、完成した後にプログレスバーを設置しなくてはいけなくなりました。 フレームに記載するタイプのプログレスバーは結構みかけたのですが… フレームに記載するとエラーが出てしまいます。何か方法はあるでしょうか… 環境は Windows版 Cs4です。よろしくお願いします。
読み込み用のswfつくったら?
AIRってなんなの FLASHなの? AIRインストールしてあるパソコンならインストールなしで使えるソフトウェアみたいなもん? web上にあるFLASHと比べて利点は?
453 :
Now_loading...774KB :2011/05/14(土) 11:33:01.24 ID:Fl1lu4sD
>>452 >AIRってなんなの
>FLASHなの?
そーだよ
>AIRインストールしてあるパソコンならインストールなしで使えるソフトウェアみたいなもん?
そーだよ
>web上にあるFLASHと比べて利点は?
ソースだよ
ではなく、スタンドアロン環境がVMにひと通り入っていることで、SQL動かしたり
JavaScript動かしたり、いろいろおもろいことができる。
またファイルストリームと言って、他言語のFile.open()的なファイルアクセス方法も
提供されてるから、イベントリスナーを書かなくても良い。
ASでデスクトップアプリ組めるってのは、ASerにはメリットかと。
455 :
Now_loading...774KB :2011/05/14(土) 13:06:15.77 ID:sBPIu/ts
>>454 なるほどthx
いまいち普及していない感があるんだよなぁ
有名なアプリケーションとかあるの?
>いまいち普及していない感があるんだよなぁ 別途インストールが必要、ってのがねぇ。
457 :
Now_loading...774KB :2011/05/14(土) 14:36:36.49 ID:sBPIu/ts
>>456 FlashPlayerも一応そうなんだけどなぜかそれは許されるよね
test
てst
forループでリンゲージしたmcにXMLからイメージを複数ロードしてfor関数内でmc.alpha=0.5 とし、RollOverしたときe.target.alpha=1になるようにしたいのですが、mcをnewした時に設定した mc.alpha=0.5が最大値になってしまいRollOverしてもalpha=1になってくれません。なにか回避策を ご教指願います。
>>460 回避策っつか、単にやり方が正しくないんだろうと推測されるが
forループ内の処理を具体的に書くとかしないと、
第三者にはどこが間違ってるか指摘できないと思う
そもそもXMLからイメージをロード云々は関係あるの?
それがなければうまくいく、とか
そうではなくて、この問題に関係ない要素なら、省いて検証したほうがいいよ
function xcreateMenu(iconXML:XML){ var iconlist:XMLList = iconXML.img; var numOfItems:Number = iconXML.img.length(); for(var i:uint=0; i<numOfItems; i++){ var url:String = iconlist[i].s_photolink.toString(); var url2:URLRequest = new URLRequest(url); var loader1:Loader = new Loader(); loader1.load(url2); var mc:MovieClip = new Mc(); var t:MovieClip = box.addChild(mc) as MovieClip; //ここでalpha=0.5としてるのですが、マウスオーバーしても1ではなく0.5のままです。 mc.alpha =0.5; mc.addChild(loader1); mc_Array.push(mc); mc.x=75+185*i; mc.y=45;
t.addEventListener(MouseEvent.MOUSE_OVER, xMouseOver); t.addEventListener(MouseEvent.MOUSE_OUT, xMouseOut); t.addEventListener(MouseEvent.CLICK, xMcClick); mc.buttonMode = true; } } function xMouseOver(evt:Event):void{ evt.target.alpha = 1; } function xMouseOut(evt:Event):void{ evt.target.alpha = 0.5; } //問題の部分を抜き取ったんですが、どうかご教指ねがいます。いらない部分が多いと思いますがよろしくお願いします。
なんか色々ツッコミどころ満載な気がするが… とりあえず、tにaddEventListenerしてるからevt.targetはmcじゃなくてtになってんじゃね?
>>464 ご指摘ありがとうございます。
evt.targetがloaderになっていました。
evt.target.parent.alphaにしたらOKでした。
ありがとうございました助かりました。
FlushBuilder4でAIRのアプリケーションを書いています。 OSはWindowsです。 クロームに終了ボタン([×]ボタン)を出さない方法はありますか。 ヘルプで調べたのですが見当たりません。 よろしくお願いします。
質問よろおねです。 いまムービーを描画するクラスDrawMov コンストラクタ→public function DrawMov(Parent:Sprite) というのを使用しています このDrawMovクラスをつかってドキュメントプロパティ(extends Sprite)に描画させるのに var drawmov = new DrawMov(this)というふうにしています。こっから質問です。 ほかのクラスOtherClassなどからこのDrawMovクラスを使用してドキュメントプロパティに描画させるにはどのように記述すればよろしいでしょうか DrawMov(xxx)といった書き方はないでしょうか。他の方法などなにとぞ解決策をおねがいします。
↑ ドキュメントプロパティx ○ドキュメントクラス
>>467 >質問よろおねです。
ビギビキ
>このDrawMovクラスをつかってドキュメントプロパティ(extends Sprite)に描画させるのに
ドキュメントクラス?
>ほかのクラスOtherClassなどからこのDrawMovクラスを使用してドキュメントプロパティに描画させるにはどのように記述すればよろしいでしょうか
他のクラス内でドキュメントクラスのインスタンスをSpriteで保持しておいて
DrawMov(xxx)でいいんじゃないの
ちょっと他のクラスの具体的な構造がわからないけど
>>469 ヒントありがとうございます。がんばってみます。
>>470 いや、もうちょっと詳しく書いてみようよ
DrawMovの具体的な中身とか
うーんとですね DrawMovはコンストラクタ引数がspriteなのでextends Spriteのクラスしか使えません 使う側でthisを指定する以外の方法があれば回避できそうなんですが。
よく似た構成のソース package { //使用するクラスのパッケージ import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; public class Ball1 { var r:int=30; //コンストラクタ public function Ball1(myParent:MovieClip,cx:int,cy:int) { var ballSp:Sprite=newBall(); ballSp.x=cx; ballSp.y=cy; myParent.addChild(ballSp); }
//円を描いたスプライトを作る function newBall():Sprite { var sp:Sprite=new Sprite(); //円を描く sp.graphics.lineStyle(3,0x000000); sp.graphics.beginFill(0xDDDDDD); sp.graphics.drawCircle(0,0,r); sp.graphics.endFill(); //縦線を引く sp.graphics.moveTo(0,0); sp.graphics.lineTo(0,-r); //再生イベントにリスナーを登録する sp.addEventListener(Event.ENTER_FRAME, rotaBall1); return sp; } //回転させる function rotaBall1(eventObj:Event):void { var ballSp:Sprite=eventObj.target as Sprite; ballSp.rotation+=5; } } }
>>472 >DrawMovはコンストラクタ引数がspriteなのでextends Spriteのクラスしか使えません
そんなことはないよ。普通に使える
>使う側でthisを指定する以外の方法があれば回避できそうなんですが。
引数のSpriteを具体的にどう使ってるの?
使う側 var ballobj1:Ball1=new Ball1(this,200,150);
>そんなことはないよ。普通に使える なぜだろうエラーが出てしまいます
thisってどういう意味よ
>>477 使う側がちゃんとSpriteインポートしてあってコンストラクタにSprite渡せばあけるはず
>>478 ドキュメントクラスのインスタンスをSpriteとして渡して
そこにaddChildさせようとしてるんじゃないかな
あ、いや、thisを与えるならSprite継承してなきゃだめだよ 他のSpeiteを与えるならってこと
あうち、それは無理です。すでに他を継承してる・・・。
だからthisを与えなきゃいいんだよ ドキュメントクラスで描画用のSpriteを作っといてそいつを下に下に送ればいいんじゃない?
なるほどthisにこだわったのがいけなかったんですね。 その方法でやらせていただきます。 ありがとうございました。そしてまたくるかもしれません
485 :
Now_loading...774KB :2011/05/15(日) 11:04:15.10 ID:XSlisYs6
まあ普通はBall1 extends Spriteにして var ball1:Ball1=new Ball1(); ball1.x= ball1.y= addChild(ball1) だと思うけど
AS3.0で staticプロパティのオーバーライドのようなものはどうやれば実現できるでしょうか クラスによってstaticプロパティの値を変えたいのですが
>>486 同じ型にキャストができる2つのインスタンスでstaticの値が変わるってのは
もうすでにstaticじゃないような……
パフォーマンスはやや落ちるけど、static var じゃなくて static function get で
値を返すようにするとか?
>>487 >同じ型にキャストができる2つのインスタンスでstaticの値が変わるってのは
>もうすでにstaticじゃないような……
確かにそう考えるとおかしいですね
インスタンス変数にしてもいいんだけどクラス内では絶対同じ値だからstaticにしたいんですよね
getter/setterってやっぱれらパフォーマンス落ちるんですか?
ファンクションコールのオーバーヘッドだけじゃない? 1フレームに何百回も参照するようなことがなければ気にすることはないかと
>>489 getterで20*20のBoolean読んでるわ…
見直そうかな
>>490 実装によってはビット演算でサクっと行けるかもしれんねw
getTimer()で処理部分を挟んで計測してみたら? 俺の環境では1万ループくらいでようやく1ミリ秒差が出るくらいだった
493 :
Now_loading...774KB :2011/05/16(月) 16:42:20.13 ID:AWbK+uBu
actionscript3で、htmlタグ付き文章をhtmlTextで表示しているのですが リストの左側の余白とか、最初から定義されているスタイルをリセットする方法はあるのでしょうか? html+リセットcssのように、初期スタイルを消してからstylesheetクラスで成形したいのですが・・・
入れるものが同じクラスなら(圧倒的にそのほうが多いよね?)ArrayよりVectorを使った方が100パーセントいいのかな?
AS2.0を使っています。 hensu = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; ↑のような0か1の二通りのパターンしかない変数が16個入った配列を 4桁の16進数に変換したり戻したりしたいんですがどうすればいいですか?
>>495 文字列でよければ
var hensu:Array = [0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0];
var num = 0;
for (var i:Number = 0; i < 16; i++) {
num += hensu[i] << (15 - i);
}
trace( "0x" + num.toString(16));
//
var num2:Number=num;
var hensu2:Array = new Array(16);
for (var i:Number = 0; i < 16; i++) {
hensu2[15 - i] = num2%2;
num2=Math.floor(num2/2);
}
trace(hensu2);
>>494 より速いのが望みならVectorが正解
>>498 さんくす
じゃあArrayのメリットって複数クラスいれられることだけじゃん
やっぱみんなVector使ってるの?
自分は基本Vectorだけど、DataGridとかのdataProviderに 直接Vector入れられないのがちょっと不便なんだよなぁ
俺は基本Arrayだなぁ。 FlexだとVectorの威力を発揮するような処理する事あまり無いし。
書き方がきらい
うん。書き方きらい でも形固定はべんりだよなあ
Java書いてると違和感ない書き方だな。 Flexで使うことあまり無いけど。
505 :
Now_loading...774KB :2011/05/18(水) 12:50:49.15 ID:XwQ0F/Cq
読み込んだwmvムービーをタイムラインで再生していて サウンドのオンオフを行いたいのですが on(release) { stopAllSounds(); } でストップした音をまたプレイしたい場合 なんて書けばいいのでしょうか? ムービー外部読み込みだとオンオフはできるのですが、 それをやってはいけない仕様でして。。
505ですが、解決しました。。 on (release) { stop(); play(); } という無茶苦茶な感じで出来ました。。
507 :
Now_loading...774KB :2011/05/18(水) 14:36:25.70 ID:st4y2XQS
2chで書き込みするのは初めてです。よろしくお願いします。
私は今adobe CS5の AS3でビリヤードゲームを作ろうと思ってます。
http://hakuhin.jp/as/block.html 今こちらのサイトを参考に作っています。
これを参考にしようと思ったのはボールが壁に当たったら返ってくるからです。
ここのサイトの内容はAS2っぽいので自分なりにAS3に変えて作り始めました。
if (ball.x < 0 + 5) {
ball.x = 0 + 5;
dx = dx * -1;
}
if (ball.x > 200 - 5) {
ball.x = 200 - 5;
dx = dx * -1;
}
if (ball.y < 0 + 5) {
ball.y = 0 + 5;
dy = dy * -1;
}
if (ball.y > 250 + 5) {
ball.y = 250 + 5;
dy = by * -1;
このif文のところが移動方向を反対にさせる文なんですがなぜか反転しません。
traceで中身を見たところ 値自体は反転しているのですが・・・
どこかおかしいところはありませんか?
全体を見なければ分からないのであれば他の部分も乗せたいと思います。
よくネチケットとかわかりませんがこんな感じでよかったでしょうか?
余計なこと書かなきゃそれでいいんだよ 全体を見ないとわからん どこにtraceかいたのかもわからんし やっぱり全体見ないとわからん
509 :
Now_loading...774KB :2011/05/18(水) 15:43:13.62 ID:st4y2XQS
>>508 bar.y = 230;var dx = 1;var dy = -3;
if (bar.x < 0+20){bar.x = 0+20;
}if (bar.x > 200 - 20)
{bar.x = 200 - 20;}
if (ball.x < 0 + 5)
{ball.x = 0 + 5;dx = dx * -1;}
if (ball.x > 200 - 5)
{ball.x = 200 - 5;dx = dx * -1;}
if (ball.y < 0 + 5)
{ball.y = 0 + 5;dy = dy * -1;}
if (ball.y > 250 + 5)
{ball.y = 250 + 5;dy = dy * -1;}
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler);
function fl_KeyboardDownHandler(event:KeyboardEvent):void
{if (event.keyCode == 37)
{bar.x = bar.x - 3;
}if (event.keyCode == 39)
{bar.x = bar.x + 3;
}}
addEventListener(Event.ENTER_FRAME, ugoki);
function ugoki(event:Event):void {
ball.x = ball.x + dx;ball.y = ball.y + dy;trace(dx);trace(dy);}
全体はこちらになります。
改行が多いとこちらでエラーになったので修正してます。見辛くてすいません。
>>509 最初のif文らへんはどこに書いてあるの?
511 :
Now_loading...774KB :2011/05/18(水) 15:53:26.41 ID:st4y2XQS
ちなみにball.xが無いのはこちらを例えば ball.x = 100; としてしまうと 挙動が変になるからです。 バー自体の位置はこれでも十分なのでこれでいこうと思っています。 ball.x又は.yのif文の場所をずらしたり値を変えたりとしたのですが駄目でした。 画面のサイズは 200px×250pxです。 yの反射の位置を250じゃない場所にずらしたりもしてみました。
512 :
Now_loading...774KB :2011/05/18(水) 15:55:11.72 ID:st4y2XQS
>>510 最初のif文は私が最初に質問したとif文のことでしょうか?
それでしたらそのif文の始まりはさっき上げた全文の5行目になります。
>>512 や、そのif文はイベントリスナ内にないの?
514 :
Now_loading...774KB :2011/05/18(水) 15:59:40.26 ID:st4y2XQS
すいません 最近作れと言われたばかりでロクな勉強をしてないので イベントリスナと言われてもよくわかりません おそらくevent:KeyboardEventやEvent.ENTER_FRAMEの中のことを指してると 考えて回答します。 最初にEvent.ENTER_FRAMEの中にif文を入れていたのですが今なってる結果と 同じだったのでif文の位置を変えてみた結果が今の全文です。
if文をugokiの中に描いたらいけたよ
そのif文はballのx座標とy座標に応じて座標をずらしたりdx,dyを反転させるわけじゃん ということはballの座標が更新されるたびに呼び出して判定しなくちゃならないということ function ugoki(event:Event):void { ball.x = ball.x + dx;ball.y = ball.y + dy;trace(dx);trace(dy); //ここにif文をいれるべき }
517 :
Now_loading...774KB :2011/05/18(水) 16:06:27.87 ID:st4y2XQS
>>516 traceの下にballのif文を入れたのですがやはり挙動は同じでした。
動き的には壁に当たったら反射したいのですがずっとマゴマゴとはまったまま
帰ってきません。
マゴマゴってのがわからんけど dx,dyはtraceで動いてる?
519 :
Now_loading...774KB :2011/05/18(水) 16:15:02.54 ID:st4y2XQS
1 -3 と最初に動き 壁に当たると 1 -3 1 3 1 -3 -1 -3 という動きを永遠に繰り返します。
もしかしてメインのタイムラインが1フレーム以上ある? 1フレームでif分をENTER_FRAME内に入れたら普通に動いたけど、フレーム増やしたら言ってるような挙動になった
あ、ほんとだ。俺も増やしたらそうなった
522 :
Now_loading...774KB :2011/05/18(水) 16:16:58.91 ID:st4y2XQS
>>520 ありがとうございます!まさにフレームが一個多い状態でありました。
早速こちらを削除したところ成功しましたありがとうございます
ついでに if (bar.x < 0+20){bar.x = 0+20; }if (bar.x > 200 - 20) {bar.x = 200 - 20;} はbarの座標に応じて判定するからbarを動かすfl_KeyboardDownHandlerの中がベター 毎フレームやるべき判定じゃないからね hakuhinさんのほうでもその位置にあるでしょ
1フレーム以上じゃなくて2フレーム以上だったな あと個人的な意見だけど、0+20とかは無駄なんじゃねとか*=や-=使えばいいのにとか思った
タイムラインのフレームが複数あるとなにもしないでいると最終フレームにいったら1フレーム目に勝手に戻る仕様 なので今回1フレーム目のdx,dyの初期化が行われたのが原因かな ちなみにaddEventListener(Event.ENTER_FRAME, ugoki);は何度行われても 二重にイベント登録されることはないらしい
526 :
Now_loading...774KB :2011/05/18(水) 16:27:52.61 ID:st4y2XQS
>>523 まさにその通りでした。
フレームを削除したら無限に移動するようになってしまいました。
そこでfl_KeyboardDownHandlerにifを入れたら直りました。
本当に皆さんありがとうございました。
ところでFLASH超基本的な質問はここでしろ!スレは落ちたのかね もう需要ないのかな
528 :
Now_loading...774KB :2011/05/18(水) 16:31:59.07 ID:st4y2XQS
すみません さらに質問なのですがこの後これを応用してビリヤードゲームを 作っていこうと思ってます。 デザインはもうできているので流れ的にはボール一個ごとの処理と反射の計算 をして穴のピクセルの部分に触れたらそのボールを消滅させてカウントを1増やし カウントがゲームクリアの個数になったらクリア画面に飛ばすという流れで間違いは ないでしょうか? 先輩に聞くと流れは最初にキチンと作らないと修正した時に 苦労をすると聞いたので少し不安です。
球をつく部分がいるんじゃね Box2Dを推したいところだがさすがにきついか
530 :
Now_loading...774KB :2011/05/18(水) 16:44:10.19 ID:st4y2XQS
玉を突くのは難しいと思いまして自分で妥協し 方向をマウスの方向で点線を出して指定する。 下の画面にパワー目盛を出してどのくらいの力で発射するかを決めてとやっていこうと思ってます。 とこっちでいろいろ調べてたらASファイルというのを作らなければむりっぽいので もう一回勉強しなおします。 ちなみにASファイルとか無しでもいけますか?
>>529 あれって英語ないとやっぱりきつい?
日本語の解説サイトだけじゃどうも俺の頭脳では理解できないw
ASファイルってただ単にコードを外に書いただけのテキストファイルだけどね OOPどころかプログラミング言語的も始めてっぽいしいきなりいろいろやるのは大変そうだ 外部ASなしでもできないことなんてほとんどないよ
533 :
Now_loading...774KB :2011/05/18(水) 16:52:58.98 ID:st4y2XQS
>>532 わかりましたーいきなりrootで躓いたので質問してたのですがどうやら
MovieClip(root)
でいけるみたいですね。こうやってだましだましやっていきます。
>>533 なんのはなしか全然わからんけど
またわかんないことがあったら具体的に質問すればみんな答えてくれるからがんばれ
536 :
Now_loading...774KB :2011/05/18(水) 17:02:26.80 ID:st4y2XQS
いきなり躓きました if (_root.ball.hitTest(_root.bar)) { _root.ball._y = _root.bar._y - 10; rad = Math.atan2(_root.ball._y-_root.bar._y,_root.ball._x-_root.bar._x); dx = Math.cos(rad)*3; dy = Math.sin(rad)*3; } rootはMovieClip(root)でなんとかできましたがMathがどう検索してもAS以外でやる方法を見つけ出せません・・・
537 :
Now_loading...774KB :2011/05/18(水) 17:03:08.61 ID:st4y2XQS
ちなみにactionscript3.0の話です。自分の状況を伝えずに申し訳ない。
539 :
Now_loading...774KB :2011/05/18(水) 17:17:02.91 ID:zYWqCMdK
AS3,XP-ProのFlashCS4です。 内部にTextFieldを持つMCをStageにaddChildして、先ずはTextFieldを参照 しようとしましたができません。 MC(TxtM0というクラス)内部では var tfd:TextField = new TextField(); tfd.text = "あいうえお"; tfd.name = "tfd"; addChild(tfd); Stageのタイムラインでは var mc0:MovieClip = new TxtM0(); addChild(mc0);//Stageに追加 として下記のようにしました。 trace("tfd= "+mc0.getChildByName("tfd")+", "+mc0.tfd); これだと両方nullになり、参照できません。 どうしたら良いでしょうか?
>>536 なににつまずいたの?
Math使えばいいじゃん
541 :
Now_loading...774KB :2011/05/18(水) 17:32:00.00 ID:st4y2XQS
>>540 Mathが使えないみたいな表示が出てきます。
>>539 おなじようにやったけど拾えてるよ
mc0.tfdだけど、ちゃんとクラスのpublicメンバになってる?
544 :
539 :2011/05/18(水) 17:48:31.89 ID:zYWqCMdK
>>543 すいません。CS4のMCライブラリのクラスでやっていました。
ASでやってみます。
545 :
Now_loading...774KB :2011/05/18(水) 18:08:16.44 ID:st4y2XQS
>>542 ,543
すいません解決しました。 varが入っていなかっただけでした。
こんなくだらない間違えで騒いで申し訳ありませんでした。
>>544 あーほんとだ。ライブラリのMCの1フレーム目に書いて
メインタイムラインの1フレーム目にかいたらどっちもnullった
でもnullってことはアクセスできてんだよなーって思って
メインタイムラインの2フレーム目にstop()とtrace文かいたらどっちも拾えたよ
つまり同じフレームでは拾えないかんじなのかな
まだ描写されてないから取れない、みたいな
547 :
539 :2011/05/18(水) 18:18:40.88 ID:zYWqCMdK
>>546 ASでしてみたらOKでした。
ただし、文字列の参照は TextField(mc0.getChildByName("tfd")).text になりました。
mc0.tfdの場合は「TxtM0 にプロパティ tfd が見つからず、デフォルト値もありません。」
とエラーがでます。
> つまり同じフレームでは拾えないかんじなのかな
> まだ描写されてないから取れない、みたいな
なるほど、タイムラインはやっぱりクセがありますね。
548 :
Now_loading...774KB :2011/05/18(水) 18:26:08.82 ID:st4y2XQS
またまたすいません var flg = new Array(); for (i=0; i<5; i++) { if(flg[i] == 1) continue; if (MovieClip(root).ball.hitTestObject(this.("MovieClip(root).brock"+i))) { flg[i] = 1; this.("MovieClip(root).brock"+i).visible = false; if (MovieClip(root).ball.x+5 < this.("MovieClip(root).brock"+i).x-20+4 && MovieClip(root).ball.y+5 < this.("MovieClip(root).brock"+i).y-7.5+4) { dx = -3; dy = -3; }}} なんですが、TypeError: Error #1123: Filter 演算子は型 _fla.MainTimeline でサポートされていません。 とでてうまくいきません。 検索をかけてみたんですがうまく引っかからずに困ってます。
549 :
546 :2011/05/18(水) 18:26:58.70 ID:sdX/f1bS
>ただし、文字列の参照は TextField(mc0.getChildByName("tfd")).text になりました。 そだね。DisplayObjectContainer.getChildByName(name:String)の返り値はDisplayObjectになるから ダウンキャストしてやんなきゃならない >mc0.tfdの場合は「TxtM0 にプロパティ tfd が見つからず、デフォルト値もありません。」 とエラーがでます。 そうそう。クラスの場合はちゃんとpublic varにしないとそうなる ASでやるなら2.0の考えは捨ててnameを使わないようにしたほうがいいかも
550 :
Now_loading...774KB :2011/05/18(水) 18:28:00.34 ID:st4y2XQS
551 :
Now_loading...774KB :2011/05/18(水) 18:38:46.73 ID:sdX/f1bS
>>550 this.("MovieClip(root).brock"+i))
のせいでエラー食らってるね
this[MovieClip(root)]["brock"+i]
こんなかんじかな
あとbrock...?
553 :
Now_loading...774KB :2011/05/18(水) 18:50:00.53 ID:st4y2XQS
>>551 ありがとうございます。
brockには突っ込まないで下さい・・・
555 :
Now_loading...774KB :2011/05/20(金) 10:34:52.44 ID:ZYO+Ho+7
AS3,XP-Pro,FlashCS4です。 Stage上の他の部品(ボタンとかMCとか)からコンボボックス(myComboBox)を 初期表示状態に戻すにはどうしたら良いでしょうか? myComboBoxをプルダウンで(例えば)1号機→3号機→4号機 といった感じで 変更後、戻るボタンを押すと初期状態の「福島Site1」と表示したいです。 newするときにpromptプロパティを使っていたので同じ様に myComboBox.prompt = "福島Site1";//trace(myComboBox.prompt)で参照できます としましたが変りません。アドバイス願います。
>>555 コンポーネントは初めて触るので違ったらごめん
private function onClick(e:MouseEvent):void {
//combo.selectedIndex = 0;//0番目のアイテムを強制選択
combo.selectedIndex = -1;//プロンプトを強制選択
}
558 :
Now_loading...774KB :2011/05/20(金) 14:31:06.27 ID:pkwb7//k
今、AS3でスコア表示をさせようと思っています。 ピクセルを指定して加算した情報(例えばkoをx=120、y=300に表示)を表示する方法がわかりません。 ムービークリップ、グラフィック、ボタンのシンボルにして MovieClip(root).kosu = ko; にしてもうまくいきませんでした。
>>558 >今、AS3でスコア表示をさせようと思っています。
>ピクセルを指定して加算した情報(例えばkoをx=120、y=300に表示)を表示する方法がわかりません。
>ムービークリップ、グラフィック、ボタンのシンボルにして
>MovieClip(root).kosu = ko;
>にしてもうまくいきませんでした。
koとはなにか(MovieClip,intなど)
kosuとはなにか
情報を表示とはどういうことか
ぜんぜんわかんないから詳しく
koというMovieClipをx=120に動かしたいってこと?
560 :
Now_loading...774KB :2011/05/20(金) 14:42:18.89 ID:pkwb7//k
>>559 情報が少なくてすいませんフレーム1で
var ko = 9;
と作りました。それをフレーム2でスコア表示として使いたいのです。
それで
MovieClip(root).kosu = ko;とかしたら表示できるかなーと思ってやってみただけです。
私がやりたいのはフレーム1で作った koをフレーム2でスコア表示として使いたいだけです。
そして表示したい位置がx=120,y=300辺りだということです。
あいかわらずkosuがわからんけどMovieClipかな
koはintかNumberね
文字を簡単に表示とさせたいときはTextFieldクラスを使おう
具体的な流れは
TextFieldインスタンスを作成
(テキストのフォーマットを定義)
TextFieldのtextプロパティに表示させたい文字列を代入
TextFieldインスタンスを表示リストにaddChild
くわしくは
ttp://hakuhin.jp/as3/text_field.html
562 :
Now_loading...774KB :2011/05/20(金) 16:25:07.25 ID:pkwb7//k
>>561 ありがとうございます!おかげでできました!
しかしリトライなどをすると数値がそのまま残ってしまいます。
グーグルなどで テキストフィールド AS3 非表示
などで調べたのですが思ったような結果が帰ってきません
どうしたらいいでしょうか?
564 :
555 :2011/05/21(土) 00:41:35.72 ID:p/1+FWJ5
>>556 ありがとうございます。
combo.selectedIndex = -1; でOKでした。
switch文の比較ってやっぱ文字列より数字の方が速いの?
計測するのが一番だが、どう考えても数値の方が速い
568 :
Now_loading...774KB :2011/05/22(日) 02:42:23.15 ID:W96+bCjq
質問です。 ActionScript3.0でXMLを読み込むまではいけるのですが、 trace(xml); だと、ファイル全文が表示されるのに trace(xml.line); のように、要素を表示させようとすると、何も表示されません。 何故でしょうか? XMLクラスではありますが、読み込ませているのはsvgファイルです(中身はXMLの構造)。 length():int XML オブジェクトの場合、このメソッドは常に整数 1 を返します。 lengthメソッドを実行しても、1が返されます。
xml.lineの中身はちゃんとあるの?
570 :
Now_loading...774KB :2011/05/22(日) 11:24:09.21 ID:PTHmaFz1
lineの中身はないですね。 <line fill="no" /> みたいなタグがたくさんあります。・・・そのせいですか!?
571 :
Now_loading...774KB :2011/05/22(日) 11:37:27.06 ID:2eMPDf+3
知らんけどとにかく最小構成にしろよ でちょっとづつ増やしてってどこが原因か特定しろ 原因わかったらその部分の何がいけないか考えてわかんなかったらググれ それでもわかんなかったら書き込めよ・・
572 :
Now_loading...774KB :2011/05/22(日) 11:38:01.47 ID:2eMPDf+3
知らんけどとにかく最小構成にしろよ でちょっとづつ増やしてってどこが原因か特定しろ 原因わかったらその部分の何がいけないか考えてわかんなかったらググれ それでもわかんなかったら書き込めよ・・
う〜ん・・・。以下のようにしてみても、格納されません。出力結果は0です。 var arr:Array = new Array(); for (var pname2:String in xml.line) { arr.push(xml.line.@fill[pname2].toString()); } trace("arr:"+arr.length); やりたいことは、以下のようなXMLファイルをArray配列に要素ごとに分けることです。 <svg> <line fill="none" stroke="#000000" stroke-width="5" x1="172.231" y1="144.444" x2="444.881" y2="447.863"/> <line fill="none" stroke="#000000" x1="453.5" y1="151.5" x2="112.5" y2="492.5"/> </svg> ↓ Array[0] = <svg><line fill="none" stroke="#000000" stroke-width="5" x1="172.231" y1="144.444" x2="444.881" y2="447.863"/><svg> Array[1] = <svg><line fill="none" stroke="#000000" x1="453.5" y1="151.5" x2="112.5" y2="492.5"/></svg> 何かいい方法があれば教えてくだれば幸いです。。。
as3.0です VectorにTextFieldを次々とpushしていきたいです 0番目には‘あ’、1番目には‘い’といった感じです この場合、pushするには毎回新しいTextFieldを作らないといけないでしょうか? 素となるTextFieldを用意すれば、あとはそのtextを変えれば済むようにならないかと思っています
で、やってみた結果は?コードは?
>>574 何に使う配列なのかによる
TextFieldは画面に文字列を表示するためのクラスだ
ソフトウェアキーボードのように全部の文字列を同時に表示するならその分のTextFieldは全部必要だし、
そうでないなら文字列だけをVectorに入れておいて随時TextFieldに入れればいい
>>576 タイピングゲームを作ろうと思っています
これなら五行目の方法でできそうですね
文字列をTextFieldに入れるのは考え付きませんでした。目から鱗です
ありがとうございました
wwwwwwwwwwwwww
>>573 初心者か。
arr.lengthが空なら、pname2は入ってるのか調べたりして原因突き止めろっての。
>>571 の言うとおり。
for (var line:XML in xml)
{
arr.push(line);
}
trace("arr:"+arr.length);
これでどう?
ってかなんで配列に分ける必要があるんだ?
xml.line[0]とかでアクセスできるけど・・・
キーボードイベントで e.keyCode==65とやるのと e.keyCode=KeyBoard.Aとやるのだと速度的にまったく一緒でしょうか? コンパイル時に勝手に65に書き換えてくれるんでしたっけ
>>580 数値指定のほうが速い、はず。
ただし、これで得られる速度差なんてたかが知れてる。
数値の直指定によるソースの読みにくさの方が問題。
宜しくクラス定数を使うべし。
>>581 ありがとうございます。そうします
もうひとつ
キーボードイベントでキャラクターを動かす際の話なのですが、
キーを押しっぱなしにした時にイベントを定期的に送りつけるか最初の一回だけ送られるかはキーボード(ハードウェア)によると聞きます
どちらにも対応できる方法として
キーダウンでそのキーのフラグを立てて
キーアップでそのキーのフラグを折る
ようにして実際に動かす部分はエンターフレームでフラグから判断する
という方法を考えたのですが
その場合キーボードイベントで実行するより判断回数が激しく増えて重くなることを危惧しています
一般的には私が今回考えたやり方でやっているものなのでしょうか?
>>582 それでおk。
キーボードのイベントはキーに設定するのではなく、Stageに設定する。
つまり、どう転んでも全キープレスごとにイベントは発生してしまうので
あまり心配しなくてもいい。
>>583 ありがとうございます!
これでやってみます
すべてのクラスの定数をあるひとつのクラスにまとめてstatic constで記述しておいて。他のクラスからその静的定数にアクセスすると遅くなったりしますか?
586 :
Now_loading...774KB :2011/05/22(日) 22:36:51.70 ID:Qw9cJNWh
Flashでペイントソフトを作成しています。塗りつぶしの機能を付け加えたいのですが、その方法で悩んでいます。 現在undoを考え1つの描きこみに対して1つのSpriteを作成し、addChild()してレイヤーのように書き込みを行っています。 どのように実装すればよいでしょうか? BitMapDataのfloodFill()が使用できそうですが、できれば塗りつぶしの箇所のみのBitMapDataを作成して追加したいです。 As3.0
>>586 現在のキャンバスをBitmapData.draw
floodFill
塗りつぶした場所以外を透明に
そのBitmapDataをいれたBitmapを上から重ねたら?ってのはだめ?
>>587 レスありがとうございます。
塗りつぶした箇所だけのBitmapDataて作成することってできるのでしょうか?
floodFill()で出力されるのは元のデータの上に、塗りつぶしを行ったデータになると思います。
元画像と、元画像+塗りつぶしから差分を取得できればできそうですが・・・
>>588 ピクセル走査して元のデータとuint比較して変わってなかったら透明に、変わってたらそのまま
でいけるんじゃない?
var soureBd:BitmapData=new BitmapData(サイズ、透過サポート); source.draw(キャンバス); var newBd:BitmapData=source.clone(); newBd.lock(); newBd.floodFill(場所、色); for(x){ for(y){ if(newBd.getPixel32(x,y)==sourceBd.getPixel32(x,y)){ newBd.setPixel32(x,y,透明); } } } newBd.unlock(); 超適当だけど
591 :
Now_loading...774KB :2011/05/23(月) 10:12:15.72 ID:MzdWYYNR
球同士の衝突の計算をしたいのですが、今ネットに転がってるソースのほとんどがAS1,2でAS3 の私にはできません。 AS1のソースを無理やり変えたのですが夥しいエラーが出てしまったのでやめました。 どなかかASファイルというのを無しで球同士の衝突が分かる方いませんか?
592 :
Now_loading...774KB :2011/05/23(月) 10:19:20.09 ID:DGXXnyJd
AS3で質問があります。 自分で作成したクラスのコンストラクタで addEventListenerでイベントリスナを追加しています。 このクラスはUIクラスの拡張をしたものなのですが、 このクラスを表示している画面が閉じられるときに 追加したリスナをremoveEventListenerで削除したほうが良いと思うのですが、 どのように実装すればよろしいでしょうか? よろしくお願い致します。
593 :
587 :2011/05/23(月) 10:25:57.29 ID:XYnatABO
>>589 ,590
おお〜ありがとうございます。
そうですね、ピクセルの比較で差分を簡単に求めれそうですね。
今からためしてみます。。
>>591 ビリヤードの人かな
具体的にどういう計算がしたいのか
どこまでできてどこができないのかが分からないと答えられないけど
球同士ということなら中心からの距離が定石かね
>>592 画面が閉じられる時ってのがよくわからないけどremoveChildの時?
その時にremoveすればいいんじゃないかな
595 :
Now_loading...774KB :2011/05/23(月) 11:25:16.81 ID:MzdWYYNR
>>594 ありがとうございます。具体的となりますと私自身よくわかっていません・・・
私が衝突をする上で分からないのは打つボールが動いた後にどうやって落とすボールの位置を把握させるかが、
私にはよくわかっていません。
計算式はあたったら進入角度と反対のほうに全て運動量を半分にするような形をとりたいです。
var i:int = 0xEEEEEE;のように16進数を使うと、internal debugger exceptionというエラーが出ます これはいったい何でしょうか? 環境は、 FlashDevelop3.3.4 flex_sdk_3.5.0.12683 です
>>595 たぶん流れとしては
動かすボールのonEnterFrame(e:Event){
(1)動かす
[(2)他のボールの座標を取得
(3)座標から距離を計算
(4)距離から衝突を判定
(5)衝突してたら二つのボールに処理をする
]
}
(2)から(5)は他のボール分繰り返すんだろうけどとりあえず合計二個でやるのがいいと思う
(2)がもうわからない感じ?
598 :
Now_loading...774KB :2011/05/23(月) 11:35:29.54 ID:MzdWYYNR
追記です。 私がやったのは if(mainball.x = ball1.x || mainball.y = ball1.y) { dx = dx / 2 * - 1; dy = dy / 2 * -1; 1dx = dx / 2; 1dy = dy / 2; } となります。 まぁとりあえずあたったら見たいな感じにしたんですけど うまく角度をつけたいのですが どのようにしたらいいかわかりません。
599 :
Now_loading...774KB :2011/05/23(月) 11:36:55.83 ID:MzdWYYNR
>>597 先のif分みたいな感じで大丈夫でしょうか?
いまいち中身の座標を取得するのは分かっていません。
600 :
596 :2011/05/23(月) 11:43:51.80 ID:6/L6Yp6I
自己解決しました。スレ汚しすいません 起動しっぱなしなのが原因だったようです
>>599 どこに書いたのかわからないけど
enterframeイベントに登録された関数内?
とりあえずそこに
trace(ball1.x,ball1.y);
trace(mainballx,mainball.y);
と打ってみてきちんと値がとれてるか確認を
それからそのif文じゃ変な挙動になりそう
あと比較演算子が間違ってる
円同士の衝突はこんなかんじ
ttp://hakuhin.jp/as/hittest.html#HITTEST_02 スクリプトは2.0だけど考え方は一緒
>>600 ちょっと調べてみたけどFDのエラーだったの?
603 :
Now_loading...774KB :2011/05/23(月) 11:56:34.81 ID:MzdWYYNR
>>601 そうですねww明らかに変な挙動ですw
こちらのページの円の衝突の方は見させていただいたんですが、
// 円A
var ca = {
px : 0, // x 座標
py : 0, // y 座標
dx : 2, // x 方向の速度
dy : 3, // y 方向の速度
r :10, // 半径
m : 1 // 質量
};
// 円B
var ca = {
px : 0, // x 座標
py : 0, // y 座標
dx : 2, // x 方向の速度
dy : 3, // y 方向の速度
r :10, // 半径
m : 1 // 質量
};
こちらの意味がいまいちわかりませんでした・・・
604 :
Now_loading...774KB :2011/05/23(月) 11:59:57.09 ID:MzdWYYNR
どのようなところが分からないかというと var caが二つあるのでどうしたものかと迷っています。 言い訳ですけど突然やれといわれて基本もままならないので文の意味を簡単に理解できません。 じっくり勉強したいんですが提出する期間が決まっているので・・・
>>602 FDのエラーか判断できるほどよく知らないです
ただデバッガが起動しているのにデバッグしたのが原因っぽいということしか分かりません
>>604 なんだろ。ミスだと思う。
caとcbかと
とりあえずは
dx,dy,dx1,dy1でやってごらん
trace()はちゃんと見れてて
mainballの値は動いてた?
607 :
Now_loading...774KB :2011/05/23(月) 12:39:19.43 ID:MzdWYYNR
自分の文の打ち方が間違っていました。。。 dx1,dx2が判定してくれません・・・
608 :
Now_loading...774KB :2011/05/23(月) 12:59:54.22 ID:MzdWYYNR
反応はしましたけどこれだとあたって無くてもY軸かX軸の条件一致したら移動してしまいますね・・・
610 :
Now_loading...774KB :2011/05/24(火) 11:12:40.75 ID:39TJp6JL
AS3です。 クイズ問題を作っているのですが 制限時間のタイマーをセットしています。 クイズ全体の制限時間を Timerイベントで管理しているのですが、 クイズの中でクリックする場面も多く、 このようなクリック処理が入ると Timerイベントが遅くなってしまいます。 たとえば制限時間を30分に設定していても 回答者がクリックする頻度によっては 処理が遅れ、実質32分とか33分とかになってしまいます。 そもそも、制限時間を作るときは どのようにつくるとうまくいくものなのでしょうか。。 ご存知の方いらっしゃいましたら、 何卒ご教授のほど、よろしくお願いいたします
>>610 そんなに使ったことないからどの程度の重さだと1ms→1.1msほど遅れるのかわからない
(
>>610 の処理の方法が悪いからなのかわからない)けど
最初と最後にDateでローカル時間持って来れば処理の重さにかかわらず
秒単位の経過時間は一応得られそうだけど
当然経過時間をリアルタイムに画面表示したいだろうからだめだよね・・・
enterFrameDate内で(%フレームレート==0)でDateを1秒ごとに更新するとか?
それなら更新周期1秒ごとというのは微妙に守られなくても
時間だけは正確かね
ttp://www.trick7.com/blog/2006/11/30-115701.php ttp://www.bit-101.com/blog/?p=910 >一方、ものすごく正確な時間測定が必要な案件の場合は、
BIT-101さんが書いた「Making Things Move!」の最後の方に書かれている
「onEnterFrameベースのカウント処理」の方が良いですよと仰られてます。
はたして有益な情報が載っているのか
うーん。。
>enterFrameDate内で(%フレームレート==0)でDateを1秒ごとに更新するとか? enterFrameDateってなんだ・・・Date消し忘れ
614 :
Now_loading...774KB :2011/05/24(火) 12:04:55.21 ID:39TJp6JL
>612さん ありがとうございます! 試してみます、取り急ぎお礼です!!!
615 :
sage :2011/05/24(火) 13:11:35.61 ID:iMVHnBBb
教えてくださいっ! 自作の関数なんですが、オブジェクト.function名( まで書くと、通常ですと hogeFunction( _hoge1:String, _hoge2:String):void とヒントが表示されるんですが、swcのfunctionだと hogeFunction( arg0:String, arg1:String):void ってなってしまいます! どうしたら引数名を表示できますか??
コーディングになに使ってんだよ…
>616 すいませんっ Flash CS5.5ですっ
>>617 出ないならまだしも一応は出るんだよねえ
一応CS5ででなくなった時の情報だけどキャッシュを削除してみるとか
ttp://www.jagra.or.jp/schoolblog/2010/09/flash-professional-cs5.html あとはこのへんをもう一度チェックしてみるくらしかわからないです
SWC ライブラリのコードヒント
ライブラリパスまたは外部ライブラリパスに SWC ライブラリを追加すると、その SWC ファイルに含まれているすべてのクラスについてコードヒントが有効になります。
ソフトウェアを再起動せずにコードヒントをリロード
アクションパネルの右上隅にあるオプションメニュー から「コードヒントのリロード」を選択します。
カスタムメソッドを記述してスクリプトアシストモードをカスタマイズする場合は、これを行う必要が生じることがあります。
AS3.0で変数の型指定をするときに、「あるクラスを継承したクラスなら何でも入れられる」という指定の仕方をする方法はありませんか? 型の部分を*にすると継承関係にないクラスまで入れられてしまうので教えて欲しいです。
カスタムイベントの送信で質問です private function _eventThrough(e:CustomEvent):void { trace(e); this.dispatchEvent(e); } としてイベントリスナ経由で_eventThroughが呼び出されると TypeError: Error #1034: 強制型変換に失敗しました。flash.events::Event@329ace49 を CustomEvent に変換できません。 と出てしまいます _eventThroughはCustomEventの送信によって呼び出されているし、_eventThroughの引数eもCustomEvent(Eventを継承しています)なんだから 当然dispatchEvent(e)できるはずだと思うのですが、何が原因でしょうか thisはもちろんEventDispatcherを継承していて dispatchEvent(new CutomEvent(省略))で送出もできています this.dispatchEvent(e);をコメントアウトしたところ、エラーは出なかったので 引数としてもCustomEventで送られてきていると思うのですが
>>622 ありがとうございます。そちらを読んで仕様なのかと思い
Flash CS3で四角をMC化し、それぞれaaaとbbbと名前を付けた二つのMCを1フレーム目に配置
1フレーム目のフレームアクションに
aaa.addEventListener(MouseEvent.CLICK,_onC);
function _onC(e:MouseEvent) {
trace(1);
bbb.dispatchEvent(e);
}
bbb.addEventListener(MouseEvent.CLICK,_onC2);
function _onC2(e:MouseEvent) {
trace(2);
trace(e.target.name);
}
と書いてパブリッシュ、aaaをクリックしたところ
1
2
bbb
と正常と思われる結果が返ってきました
カスタムイベントが悪いのかな・・・
>618 ライブラリパスにswcのASファイルの場所を追加したら、引数名が表示されました! ありがとうございました!
625 :
621 :2011/05/25(水) 11:36:56.17 ID:HQSDJ8Rh
trace(e is CutomEvent); もtrueだったし this.dispatchEvent(e.clone()); も同じこと言われた 値コピーして新しいCustomEvent返す public function throughClone():CustomEventをCutomEventに追加して this.dispatchEvent(e.throughClone()); で事なきは得たけどひと手間無駄してる感じ なんでだろ
extendsしただけで、コンストラクタでsuperの呼び出ししてないとか? もう、_eventThrough(e:Event):void で宣言して、内部で var ce:CustomEvent as e; とかで処理するとか。
>>626 さすがにsuperしてました。
ふつうのイベント送受信はできるのです
その方法でもやはりdispatchの段階で同じエラーになるようです
子を監視して子が自身にイベント送信したら
そのイベントをそのまま自分に送信し
さらに自分を監視している親が反応する
ということをやりたいのですが
例によって車クラスがあったとします サブクラスにカローラクラスがあります インスタンスのカローラ1とカローラ2は残りガス量などの個々のインスタンス変数を持っていますが マックススピードは一緒なので当然static変数にします 同様に車クラスのサブクラスであるフィットにもstaticにマックススピードがあり、カローラのそれとは違う値です ここで、車クラスの定義でマックススピードを使いたい場合はどうしたらよいのでしょうか 車の protected function _go():void{ this.x+=maxSpeed; } のような感じです _goはもっと長いのですがサブクラスでもまったく同じ動きをし、maxSpeedの値だけが違います このmaxSpeedを指定するためだけにオーバーライドするのはおかしいですよね maxSpeedがインスタンス変数ならそのまま車クラスでprotected varしておいてカローラのコンストラクタで指定して代入すれば済むのですが 明らかにカローラ共通の値をインスタンス変数として持たせたくありません もちろん実際に使うのはカローラクラスなので車クラスは抽象クラスのようなものです こういった場合はどのようにしたら良いのでしょうか 車でget maxSpeed():int{} しておいて カローラでget maxSpeed():int{return スタティックmaxSpeed}とオーバーライドするとか?
結局dispatchEventの引数はnewされたクラスが必要ってことなんじゃなかろうか。 Javaならコンストラクタをオーバーロードして、 new CustomEvent(e)とかでわかりやすく書けるけど。 なんか、すっきりする回答が欲しいね。
Flash CS4使ってるんですが、 外部で定義したクラスAと、その継承クラスBを定義して、 ひとつのflaファイルで、Aを基本クラスとするシンボルA'のインスタンスと Bを基本クラスとするシンボルB'のインスタンスを作り、 A'とB'にそれぞれ追加した同名のインスタンス(たとえばbutton)とかあると名前のコンフリクトがおきたり A'に書いたフレームアクションがB'で走ったりするのはCS5でも一緒ですか?
外部で定義したクラスにフレームアクション??
>>634 はい…。すいません言葉が足りてませんでした。
MovieClipの継承クラスを定義してます。
細かい追加のパーツとかはフレームアクションで済ませたりしてるのですが…
MovieClipを継承したクラスAをasファイルで定義 同じようにAを継承してBをasファイルで定義 CS上でシンボルAAをライブラリに登録、基本クラスをAにする AAのタイムラインアクションにvar b:Button シンボルBBをライブラリに登録、基本クラスをBにする BBのタイムラインアクションにvar b:Button →怒られる ってこと?
ムービークリップを画面にランダムに配置するコードを作成しています このときにできるだけ、重なって表示しないように配置しようとして、以下の処理をしてるのですが、 表示すると、かなりの確率で重なって表示されます。移動後直後に、hitTestObjectを呼んだら当たり判定できないのでしょうか? デバックができない環境なので質問しますm(__)m
638 :
637 :2011/05/26(木) 12:24:08.49 ID:6bpCjMpV
McUはMoveClipを継承したクラス m_aUserMcもMoveClipのMcUの配列 for(var ii:int = 0; ii < m_aUd.length; ii++) { var cUser:Ud = m_aUser[ii]; var cMcU:McU = new McU(cUser, false); for(var jj:int = 0; jj < 100; jj++) { cMcU.x = (Math.random() * 600; cMcU.y = (Math.random() * 600; var bOK:Boolean = false; for(var kk:int = 0; kk < m_aUserMc.length; kk++) { var cMc:McU = m_aUserMc[kk]; if(!cMcU.hitTestObject(cMc)) { bOK = true; break; } else { m_aUserMc.push(cMcU); } } if(bOK) { break; } } m_aUserMc.push(cMcU); this.addChild(cMcU); }
639 :
Now_loading...774KB :2011/05/26(木) 12:50:57.31 ID:5rEGBCtZ
>>628 車クラス(抽象クラス)にmaxスピードのプロパティ入れない。
車の例えで話を続けるならば、車クラスはフレーム(枠組)だけで良い。
車クラスが実際に走ると考えるから破綻する。
車クラスは鉄の枠だけで、ココにエンジンを載せて、ココにシートを配置してと
レイアウトだけでイイ。
実際に走るカローラクラスにmaxスピードのプロパティを持たせるべき。
>>639 カローラクラスもフィットクラスも走る部分は
maxスピードの値以外まったく同じ式なのですが、まったく同じことを書くということでしょうか?
641 :
639 :2011/05/26(木) 20:19:27.85 ID:5rEGBCtZ
>>640 少し車の喩えから離れます。
> maxスピードの値以外まったく同じ式なのですが...
ならば、maxスピードはサブクラスのプロパティとするべきでしょうね。
オブジェクト指向の考えを推し進めていくのならば、当然重複する部分はまとめるべきです。
しかし、意味的な部分で可読性が下がるならば、寧ろ冗長的表現も必要だと思います。
人は物忘れをする生き物です。
半年もすれば、自分のやったことの2割3割は忘れてしまうモノです。
そういう意味で、重複する部分も多少残した方が良いと思います。
>>641 たしかに意味的にはサブクラスのstatic constが一番いいですからね
なんだかまとめられるものは全部上のクラスに持ってきたくなっちゃうんですよね
私は2日も空けば自分の書いたコードの理由に頭をひねらなきゃなんないです
>>636 すいませんフレームアクションはおいといてください。
CS4のステージ上でシンボルAAにbという名前付きのボタンシンボルのインスタンスをおくと、
var b:Button
はCS4が自動宣言すると思います。
で、おそらくですがこの自動宣言がシンボルAAのクラスではなく、基本クラスのAで行われるため、
シンボルBBのインスタンス上にもbという名前付きのボタンシンボルのインスタンスをおくと
名前重複で起こられる、ということです。
つづき で、別件として、フレームアクションについて、たとえば シンボルAAにhogeというムービークリップシンボルをおいて、11フレーム目で hoge.visible=false; とか書いておくと、 シンボルBBのインスタンスにはhogeがないので、実行時に シンボルBBの11フレーム目になると、nullのプロパティまたはメソッドにアクセスできませんとかで怒られます。 ただし、これはシンボルBBの11フレーム目にコメントとか;(セミコロン)とかスペース書いとくと回避できます。
>>643 >自動宣言がシンボルAAのクラスではなく、基本クラスのAで行われるため
そんなはずはないけどなあ
Aを継承したAAとBBにオーサリング時それぞれButtonを配置しても、エラーは出ないぞ
もっとも、両方に配置するならAにButtonを定義しとけばいいと思うが
>>645 Aを基本クラスとしたオーサリングAAと
Aを継承したBを基本クラスとしたオーサリングBBの話じゃね?
「デバックができない環境」の意味がわからん あと「デバック」て
>>646 なるほど、納得
それはCS5でも一緒、というより仕様だと思うんだが…
>>644 にしても、それが嫌ならAAクラス作ってそこで宣言すればいいんじゃね?
単にクラス設計とかタイムラインとの併用そのものが、よろしくないように思えるな
うむ タイムラインが入るとややこしくていかん タイムラインで宣言された変数ってdynamicに追加されるんだっけ
>>645 >>646 わざわざ検証していただいたんですね、ありがとうございます。
すいません説明がヘタで…646さんのおっしゃる通りです。
デザイナーさんがCS4で配置して、自分が制御して…っていう流れで、
どうにか横着したいw
>>それが嫌ならAAクラス作ってそこで宣言すればいいんじゃね?
これは自動宣言を切る、という意味ですか?
あ、すいません違いますね。 自己完結しました。 今は外部で クラスAを定義 クラスAを継承したクラスA'(コンストラクタだけ?実質ただのコピー)を定義 クラスAを解消したクラスBを定義 みたいにしてます。
652 :
Now_loading...774KB :2011/05/28(土) 00:07:53.21 ID:iVq8Jr7j
CSを買おうと思うのですが、値段が高いので、 どこか中古でCS4か3が買えるお店が無いでしょうか 関東がいいのですが、通販でも可です。 なにやら他のFlashスレが過疎っているのでここで お聞きさせていただきます。 ちなみに4や3ってFlash Player10.1には対応しているでしょうか?
1万でかえんのか
655 :
Now_loading...774KB :2011/05/28(土) 15:55:33.27 ID:iVq8Jr7j
>>653 亀お礼ですがありがとうございました。早速教えていただいたところに
連絡してみます。
しかし10.1にCS4でも対応しないというのは痛いですね
自分の周りのPCはFlash Playerがみな10.1で、ようするに
CS5を買えというありがたいアドビさまの考えなのでしょうか…
できればFlash playerのほうはバージョン上げないでほしいですね
こんなことをしていると、ますますFlashが廃れていくように思うのですが。
656 :
Now_loading...774KB :2011/05/28(土) 15:58:03.05 ID:iVq8Jr7j
ああっと!ヤフオクだったんですね。領収書が出ないのか・・・
>>655 PCのFlash Playerが10.1なら
10.1以下のFlashは見られるわけだし、問題なくね?
なにか勘違いしてるのでは?
どうしても安くやりたいなら、FlexSDKはダメなのか?
658 :
Now_loading...774KB :2011/05/28(土) 23:46:03.71 ID:iVq8Jr7j
>>657 実はフリモ3というのでやっているんですが、作った物がFlash player 8とか
6とかだと正常に動くんですが、プレイヤーが10.1だと動かないんですよ><
10.1用の書き出しができる設定もあるんですが、それで書き出しても
プレイヤーが8や6でないと正常な動作をしません
三ヶ月徹夜でがんばったのにもう泣きたいです。あきらめてCS5を
アドビの思惑どおり買うことにします。
ありがとうございました。
>>658 Adobe純正でも似たようなことがあるから困る。
ためしに、「シーン」で区切ったムービーをCS3とCS4で作って、
バージョン9のswfで出力して、「ニコニコ動画」に上げてみると、
CS3のは問題なく動くが、CS4のは「シーン」ごとにシークバーが
先頭に戻り、まともな頭出しが出来ない。
>>661 ありがとうございます
トップレベルのとこりにあったんですね
>>663 なんだと・・・
グーグル先生にしてやられた感じです
盲点でした。本当にthx
>>7 返信が遅くなりましたが、ありがとうございます。
街の方の書店で見つけたので買いました。
まさにやりたいことが解説されていたので助かりました。
>>665 その本立ち読みしようとしたら寸前に他の人に取られて
30分待ってたらそのまま買ってきやがった・・・・
サンプルは確か普通に落とせるんだよね。
SiONなんか一本解説付きのがあったからそれだけでも勉強になったり。にひひ
ActionScriptで、というかFlashDevelopでコードから作ったswfファイルって、 EmbedやLoaderで読み込めないんでしょうか? Flash CS5で作ったswfは再生できるんですけども 同じ拡張子でも別物なのか、それとも何かミスしてるのか知りたいっす。
読める、とおもうけどなあ
>>666 それ、堂島だったら俺ですね。。。
サンプルは普通に落とせるっぽいです。
結構嬉しいけど、それっていいのかな〜とか思ったり。。。
>>667 読めてるな、俺は
・メインクラスをSpriteクラスから派生させている
・Loaderがある方のswfもFlashDevelopで作成している
んだけど、同様の方法でテストしてみて順番に自分の目的に近づけていって
どこが問題なのか調べてみたら?
loaderならイベント全部拾ってどこまでいけてるのか見てみるとか
flex_sdk_4.5.0.20967に変更したら、Stringの変数にドットをつけてもメソッドが表示されなかったり、 import flash.events.Event;を手動で書かなければならなくなりました。 設定忘れやミスでしょうか プロジェクトのテストをすることはできますが、この状態でコードを書くのが面倒くさいので解決方法を教えていただきたいです
673 :
Now_loading...774KB :2011/05/30(月) 13:16:16.57 ID:jG5LIZIY
CS5.5でドキュメントの保存と自動リカバリのダイヤログ出たとたんにそのままフリーズしやがったぞ!! 氏ねよ!!!!
クラスパスがおかしいことになっていそうだということしか分かりません 再インストールをすれば解決するかもしれませんが、できない環境で困っています どうしたらいいのでしょうか
Flash CS5を使用しています JPEGencoderだとかBase64encoderだとかいったものはそのままで使えるのでしょうか? それともなにか入れたりしなくてはいけないのでしょうか?
676 :
621 :2011/05/30(月) 21:17:11.54 ID:DiBP383f
>>621 ですが解決しました
カスタムイベントクラス内でclone()をoverrideしていなかったのが原因のようです
ttp://livedocs.adobe.com/flex/3_jp/html/help.html?content=createevents_3.html >この場合は、サブクラス内で Event.clone() メソッドをオーバーライドする必要があります。
clone() メソッドは、type プロパティとすべての新規プロパティをクローン内に設定して、イベントオブジェクトのクローンされたコピーを返します。
通常、clone() メソッドは、new 演算子によって作成されたイベントインスタンスを返すように定義されます。
ということはイベントハンドラ内でdispatchEvent(e)をするとeのcloneが送られてたわけか
overrideしていなかったからe.clone()の返り値がEventのままでCustomEventにダウンキャストできなかったのが原因かな
>>625 の解決法と実はなんら変わらないっていう
結局コピーは必要なのね
まあ一応スッキリしたので報告
ByteArrayってカスタムクラスのインスタンスを普通に保存して読み込んで復元することができるのでしょうか それともプロパティを全部数字と文字列に直してObject作って保存するものなのでしょうか
Tweenerで配置したビットマップが指定した領域に存在するか を得たいんだけど、どうやったら出来る?
>>678 解決したいだけならビットマップの参照もっといてenterFrameで座標見ればいいんじゃない?
680 :
677 :2011/05/31(火) 11:46:45.05 ID:CFpe5gs0
>>677 ですが
flash.net.registerClassAlias(aliasName:String, classObject:Class):void
で保存時と復元時にクラスにエイリアスを張ったらいけるようですね
コンストラクタの必須引数が0なのとprivateは復元できない制約があるみたいですが
>>667 ですが、解決した、のかなーと。
ロードする方とされる方のswf、どっちも同じクラス名にしてたのがよくなかったようです。
↓でmainが無限に出力されてました。
理屈がいまいちよくわかんないんですが、ロードしたswfを作成するつもりで
自分自身を複製しちゃったりしてるんですかね?
ロードする方
public class Main extends Sprite
{
public function Main():void
{
trace("main");
var loader:Loader = new Loader();
loader.load(new URLRequest("Hoge.swf"));
addChild(loader);
}
}
ロードされる方
public class Main extends Sprite
{
public function Main():void
{
...
}
}
>>681 そんなことよりloader.load()の後のaddChildをイベントハンドラにいれてないの?
>>681 新たに読み込んだswfに同じパッケージの同じクラス名があると
無視されて既存のクラスが使われるよ
名前が衝突しそうならApplicationDomainを新しく作れば回避できる
loader.load( new URLRequest("Hoge.swf", new LoaderContext(false, new ApplicationDomain()) );
>>682 HTMLのimgタグみたいなもんだから読み込む前にaddChildしちゃってかまわないはず
読み込み完了までアクセスできるメンバは限られるから注意がいるけど
684 :
Now_loading...774KB :2011/06/01(水) 10:06:16.05 ID:Up8WIE7R
initするまでアクセスできないメンバもあるんだしイベントにいれるべきだろ
ttp://f-site.org/articles/2011/02/19164156.html こちらでは配列、Vectorに与えるインデックス番号を計算するときは
uintにキャストしたほうが良いと書かれていますが
forループ内でイテレータをインデックス番号にする際は
もうイテレータ自信をuintで回したほうがよいのでしょうか
i++の時点でデータ型は確定しているのかな
forでイテレータにuintを使うと遅くなる、等の記事も見かけたことがありますし
正の値が保証されているときもイテレータの書き方として一番正しいのはintなのでしょうか
その記事intとuintの比較じゃないから 式で渡すのとリテラルで渡すのだったらリテラルの方が良いっていうだけ なんでuintにしてるかは知らんけど、普通にintでいいんじゃね?
ああ、式とリテラルじゃなくて、*型と型が定まってる場合の比較か。
>>687 array[4]...型が決定している
array[4+1]...型が決定していない
var i:uint = 0;
array[i]...決定している
array[i+1]...決定していない
for(var i:int=0;i<length;i++){
array[i]...してる?してない?
}
してるんですかね
わからn
uintでもintでもその型の変数使ってんなら型決定してるよ わからんレベルなら気にしないでintにしとけばいいんじゃね?
FMSでFileオブジェクトとwritelnメソッド使ってイベントログファイルに書き出してるんですが 排他制御って実装されてないのでしょうか。
692 :
復習のコード :2011/06/04(土) 02:14:48.02 ID:lkCIwHV1
教えてください。 ラベル10個をタイムラインに配置して、 各ラベルにはそれぞれ問題をテキストで付属してます。 1問目から10問目まで解いた後に、 間違えた問題をもう一度解答するようにして、 間違えた問題がゼロになるまで復習できるようにASを組みたいのですが、 どうやればいいのでしょうか? お願いします。 環境:XP,CS5,AS3,
問題をArrayにpush 正解した問題番号をsplice lengthが0になるまでwhile とか
ボタンを押したときの挙動と コンテキストから選択した時の挙動がまったくいっしょなんだけど(イベント引数を使わない) addEventListenerのときはそれぞれ ContextMenuEvent MouseEvent で同じメソッド登録して そのメソッドの引数をEventにするのって(動いたけど)ダメ?
import flash.display.Sprite; function Test(){ var foo:Sprite=new MySprite(); addChild(foo); } Test(); 質問です。適当な画像の入ったシンボルMySpriteを用意し、 上のコードを新しいプロジェクトのメインタイムラインに記述し実行するとMySpriteは表示されますが、 fooはローカル変数なので関数を抜ける際に削除されるはずなのにMySpriteの中身はステージ上には表示されたままになります。 この場合、fooはどこにどのような名前で存在していているのでしょうか?
696 :
Now_loading...774KB :2011/06/04(土) 20:51:47.60 ID:qwZszFzZ
new MySprite() の返り値はMySpriteクラスのインスタンスの参照 よってfooにはメモリ上のMySpriteインスタンスの場所を指すアドレスが入っている fooは関数を抜ける時に破棄されてるけどMySpriteインスタンスが破棄されているわけではない インスタンスのメモリ上の場所はわかんなくなるけど存在は残ったままってかんじかな
画面に表示されてりゃ表示リストで掴んでるに決まってるだろうよ
698 :
Now_loading...774KB :2011/06/07(火) 07:40:56.25 ID:oAF2rLHb
AS3,Player10,WinXP,FlashProCS4 正規表現を使って同一フォルダ内にある任意名のTextファイルを読み込みたいのですが、 RegExpインスタンス(ここではregExp0)の扱いで困っています。コードは下です。 ※フォルダにTextファイルは1個だけです。 var regExp0:RegExp = new RegExp(".txt$","g");//拡張子で後方一致 var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.load(new URLRequest(regExp0));// ←ここでエラー function completeHandler(event:Event):void { //読み込み後の処理 } 上の場合、URLRequestの引数の型が違うということで怒られます。 regExp0をStringにキャストすると、「ストリームエラー。 URL: file:///.txt$/g」と出ます。 どうすべきでしょうか?
regExp0はRegExpクラスだからね RegExp.exec(str:String):Object でstrのパターンマッチされた配列が返されるけど 今回の場合元の検索対象strがないからなあ フォルダ内の全ファイル名をAS3でどうやって取得するかってのはちょっと見当たらないからわからん 他の言語と組み合わせて取得するとかかねえ
RegExpがどうのこうの以前の問題として、ファイル名検索っていう処理は AIRならできるけど、webに乗っけるなら無理だね。 決まったファイル名にするか、loadVarsあたりで渡すしかないんじゃない。
701 :
Now_loading...774KB :2011/06/07(火) 14:21:39.08 ID:IiMcMQZD
最近よくあるキャンペーンサイトに見られるような たとえばtwitterのログインidを入れると、 そのidのtwitterページがキャプチャされ表示されたり、 またそのidのtwitterページにある画像(フォロワーなどの画像)が 取得され表示される、などといったことがやりたいのですが、 これはjavascriptやphpとの連携が必要なのでしょうか?
703 :
698 :2011/06/07(火) 15:43:01.24 ID:xwERW3uq
>>699-700 レス有難うございます。
AIRは不可なので、素直にファイル名指定にします。
>>696 >>697 遅くなりましたがありがとうございました。
ローカル変数でインスタンス化するのはよくなさそうなので配列に入れてやってみることにします。
705 :
Now_loading...774KB :2011/06/07(火) 20:53:20.67 ID:Y/fIOy5W
AS3.0 Adobe Flash Professional CS5 課題でカーレースゲームを作成しているのですが、 進行中コースを回転するように進んでいく構成の方法がわかりません いろいろなサイトを調べましたが取っ掛かりすらつかめません どなたかヒントだけでもお願いします
>>705 進行中コースを回転するように進んでいく構成
って何?
図描いてUpすると吉
トップビューのゲームとして、 車を固定して、背景を移動させる or 背景を固定して、車を移動させる このどっちかをつくるの?
708 :
705 :2011/06/07(火) 21:30:03.43 ID:Y/fIOy5W
710 :
709 :2011/06/07(火) 21:50:30.28 ID:Y+S/iZJo
ゴメン上のレス>>は708さん宛
711 :
Now_loading...774KB :2011/06/07(火) 22:19:16.60 ID:YE8T83IR
いきなり3Dはきついだろ・・・
>>708 を見た感じ
背景(緑)
コース(灰色)
車
の順で重ねてあって
車の座標は動かないかんじ
左右キーを押すと車体がかたむいてマップが反対方向に回転
上下キーでマップが反対方向に移動(加速つき)
コースから外れると速度が著しく遅くなる
あとはショートカットしないように各所にフラグがありそう
この流れでやりかた思いつかないところはある?
712 :
705 :2011/06/07(火) 22:43:11.59 ID:Y/fIOy5W
>>709 3Dはまだ敷居が高いですが・・・参考のひとつにさせていただきます。
ありがとうございます
>>711 マップの回転のところです。
コースのインスタンスにrotationで回転させるとインスタンスの中心で
回転してしまいうまくいかなかったので、どういう解決法があるのかが
知りたかったのです
713 :
Now_loading...774KB :2011/06/07(火) 22:47:55.61 ID:YE8T83IR
714 :
705 :2011/06/07(火) 22:57:27.22 ID:Y/fIOy5W
>>713 なるほど。早速試してみようと思います。
遅くまでどうもありがとうございました。
こんな事言うのも何だが、 学校の課題を2chで質問するなんて、 教官にバレまくりじゃないのかなぁ。
>>715 いや、その教官も分からないことがあったら、ここで聞いていると思われ。
レスポンスが素早く得られて 回答者のレベルが高いのはどこなのかなー やっぱmixiのコミュニティとかtwitterとかなのかな
ちゃんと質問するならFlash-jp一択じゃないの
質問する際は、回答者に具体的な情報を与えてくださいなのニャ!
つーか、Flash-jpの文章って2chより読みづらいなあ。 表示フォントのせいか。
別人ですが
>>708 見てて気になったことがあるので質問です
基準点は動的に変更できないらしいですが
>>708 は毎回車中心で回転してるようです
どういうトリックが考えられますか?
>>721 回転軸の座標は決まってるので、おそらく、マップの基準点の座標
と、回転軸の座標から、マップを回転させる数式があるのではないでしょうか?
それをエンターフレームなどで更新させているのでは?
>>713 のリンクに
新しく作った描画オブジェクトの原点に回転させたい座標をあわせてaddChild()
んで親を回すって書いてあるが
725 :
Now_loading...774KB :2011/06/10(金) 22:33:13.54 ID:LkgI8Qea
MatrixTransformer.rotateAroundInternalPoint() と DisplayObject(map).transform.matrix で任意の点で回転させる人は居ないのか。
ごめん。下げ忘れた。
わざわざめんどくさいことする意味がない ダンチで早いなら別だが
使ったことあればわかるはずだけど、MatrixTransformer.rotateAroundInternalPoint()は既に変形してる 表示オブジェクトに連続して適用するのはかえってめんどくさい。
変形の中心点座標変わらなきゃいいんだけどそうじゃないしね
var Speed:Number=10; var copy_x:Number=x; var copy_Speed:Number=Speed; for(var i:uint=0; i<3; i++){ Speed+=0.3; x+=Speed; trace(x ,Speed); copy_Speed+=0.3; copy_x+=copy_Speed; trace(copy_x ,copy_Speed); trace("-----------------------"); } 上のコードは、物理運動を再現しようとしていて気になった部分があったので簡略化したものです。 毎フレームの動作だった部分は回数を限定したループに置き換えています。 内容は、まず1行目のSpeedは移動速度を表したもので、ループ内で0.3ずつ加速しxに加算されます。 3〜4行目のcopy_xとcopy_Speedはそれぞれxと上のSpeedの内容をコピーしたもので、ループ内でも同様の処理を行います。 これをメインタイムラインの1フレーム目で実行すると、 本来ならトレースされる結果はコピー元のx、Speedとコピー後のcopy_x、copy_Speedで同じになるはずなのですが、 次のレスで示すようにxとcopy_xに極僅かに差異が生じてしまいます。
10.3 10.3 10.3 10.3 ----------------------- 20.9 10.600000000000001 20.900000000000002 10.600000000000001 ----------------------- 31.8 10.900000000000002 31.800000000000004 10.900000000000002 ----------------------- これは何が原因で起こることなのでしょうか? コンピューターの小数計算は擬似的なものであまり正確ではないと聞いたことがあるのですが こうも簡単にズレが起こると困ります・・。 AS3.0、FlashPlayer10、FlashProfessionalCS5の環境で起こりました。
それは浮動小数点演の宿命 構造的に全ての実数を表現することはできない
>>732 ありがとうございます。ではこのような計算結果のズレに根本的な対策法はないということでしょうか。
たとえ0.000000000000004でも==を使って比較したときには違う数として判定されるので
精密な計算の必要な場合にはどうしたらいいのでしょうか。
>>734 Math.abs(a - b) < 0.01、みたいな感じで差が許容値以下かどうかで判定とか
だからNumberの==はおすすめしない
AS1 を使っています。
HTTP://FLASHFILE.swf?a=1&b=2 (もちろん、HTTPは小文字)
この時、ActionScript には a と b が定義されるわけですが、
「&」が「&あんぷ;」にエスケープされると、ケータイの場合、b は
定義されません(機種に依るのかも知れませんがソフトバンクは、
そうでした)。amp;b も変数にはならいと思います。
(PCだと問題は発生していません)
質問:
& がエスケープされている時に b を取得する方法は無いでしょうか?
ActionScript でクエリ(「?」以降)を丸ごと取得することは出来るのでしょうか?
function Equal(a:Number, b:Number, err:Number = 0.01) : Boolean { return Math.abs(a-b) <= err; } function Main() : void{ if (Equal(x, copy_x)) trace("equal"); } つーかそれspeedとcopy_Speedは一致してるよね でxとcopy_xが一致していない xの宣言部分は見当たらず、グローバルな変数と思われる 宣言はどうなってるの? そもそもワークとして使いたいだけなら毎フレーム同じ演算を与えるより コピー元の値を毎フレームコピーした方が良いよ
精度確認のためのただのテストだろ…
さらに引数の最後だけデフォルト値ってのもできないかと
テストの為のオリジナルコードなら変数命名はa,bやx,yで十分
>毎フレームの動作だった部分は回数を限定したループに置き換えています。
この記述からもどうみても実際のソースから引用して改変している
問題は提示されていない部分に原因のある可能性があること
>>741 へえ。だったらどこなら出来るの?
>>742 だって普通に考えてそんなことするやついないだろ
>デフォルト値
ごめん。完全に逆だったわ。サンクス
744 :
Now_loading...774KB :2011/06/12(日) 19:49:47.14 ID:S64g2SPU
>>738 クエリの件、まずは _url プロパティを試してみます。
ありがとうございました。
3.0で x,scaleX,rotation等、直接いじれるパラメータをトゥイーンするだけでよい トゥイーン終了時に実行する関数を指定できる を満たすトゥイーンライブラリの中で最も軽い(CPU負荷が。メモリはそこまで気にしない) ライブラリはなんでしょうか
それだけなら自分で書くのが1番って思ってしまうのは俺だけ?
考えもしなかったわ たしかに汎用性いらないなら特化したほうが早いに決まってるよね 既存のライブラリ拾ってきてコード削るか・・ サンクス
スクリプトでjpgやpngなどの画像を出力することはできますが、動画を出力することはできますか? AS3.0です
できません
>>751 ありがとうございます
パラパラ漫画よろしく何枚も出力するくらいかあ
自前でエンコードしてbyteArray→FileStream(AIR)とかAlchemyでC++あたりのライブラリ動かすとか 絶対不可能ってことはないと思うけども
755 :
忍法帖【Lv=1,xxxP】 :2011/06/14(火) 19:13:18.51 ID:1Uzs255W
てst
>>754 かっちょええのう
そりゃ無限ループだし単純な拡大じゃないよね
どっかで切り替えてるのかね
サイズが10000越えたらサイズを0にする、とか?
758 :
忍法帖【Lv=1,xxxP】 :2011/06/14(火) 20:58:58.39 ID:1Uzs255W
てst
質問です。新規ドキュメントの1フレーム目で下のスクリプトを実行しても 関数Baaが実行されないのですがなぜでしょうか? ちなみにFoo.dispatchEvent(new Event(Event.ENTER_FRAME));を最後の行に追加すると一度だけ実行されます。 ということは毎フレームのイベントに登録されてはいるということなのに、なぜ毎フレーム実行されないのかわかりません。 import flash.events.Event var Foo:EventDispatcher=new EventDispatcher(); Foo.addEventListener(Event.ENTER_FRAME, Baa); function Baa(event:Event):void{ trace("イベント実行中"); }
EventdispatcherってENTER_FRAMEデフォルトでうけとったっけ? Displayobjectからじゃなかった?
>>752 無圧縮AVIで出力しておいて、適当なエンコーダで圧縮しなおすとか
>>754 単純な拡大縮小だと思うよ。
1枚絵じゃなく、複数画像を同時に使ってるけど。
そこそこサイズの大きな画像を使えばできると思う。
凄い初歩的な質問かもしれないのですが、 ステージ上に置いたムービークリップ(普通にFlash CS3の作業キャンパスの上にライブラリからD&Dして配置)が、 stage.addChild()で配置したムービークリップの背面になってしまいます。 stage.addChild()で配置したものよりも前面にするにはどうすればよいのでしょうか? AS3です。 setChildIndexとかやってみても、どうやってもaddChildで配置したMCが前面になってしまって困ってます。。。
>>764 後からaddChildしたら基本的に前面に行かなかったっけ
前面に置きたいmcの親がライブラリから配置したmcの背面にあるとかないよね?
>>765 あー逆だった
ライブラリのmc名が取得できるなら
1フレーム後にremoveしてaddでいけるんじゃない?
>>764 後から配置した物ほど前面にくるよ
だから、前面に出したいなら
swapChildren()とか、setChildIndex(numChildren - 1)とかやる
それでも出来ないなら、addChild()したDisplayObjectContainerが違うとかだろう
本当に「どうやっても」できないなら不可能だが、単にやり方が正しくないだけだと思う
768 :
Now_loading...774KB :2011/06/15(水) 02:27:07.30 ID:Xw9NRXLw
AS3,WinXP-Pro,FlashCS4(たまにCS5)です。 ステージに親MCを置いて、その中に子MCを5個配置しました。模式化すると下の感じです。 ■が子 Stage{ 親[ ■■■■■] } ここで、子をクリックするとフォーカスの黄色い枠がその子に付き、子以外(例えばステージで何も無い部分) をクリックするとフォーカス枠が消えるようにすため、子のASに stage.addEventListener(MouseEvent.CLICK,focus_handler,false,0,true); private function focus_handler(evt:MouseEvent) { trace("target= "+evt.target);//ターゲットの確認。子かそれ以外か if (evt.target == this) { stage.focus = this; }else { stage.focus = null; } } と書きました。 これは確かにフォーカスが出るのですが、一番右端の子のみ作用し、他の子には現れません。 traceのターゲットの確認では他の子も同じ様にクリックの対象になっていますがやっぱり、 右端のみです。 目標は、 ・子をクリック→フォーカス枠 ・ステージの他の部分をクリック→解除 で、特に上記のコードには拘りません。 宜しくお願い致します。
>>768 stageにイベント登録してるからfocus_handlerはクリックするたびに計五回呼ばれてんだよね
同時に呼ばれてるけどイベント関数はシリアルにしか実行できないわけで
おそらく今回はaddChildした順?にイベント登録されているのでその順番でfocus_handlerは呼ばれる
その順番を
12345
とすると
左端をクリックしたときは1でfocus_handlerが呼ばれ、evt.target == thisを満たすのでフォーカスされるけど
次に2でfocus_handlerが呼ばれたときにevt.target == thisは満たさないのでstage.focus = null;が実行される
よって1から5までfocus_handler実行した結果フォーカスはnullになってる
つまり最後に実行したevt.target == thisの評価でフォーカスが決まる状態だから5をクリックしたときだけ期待の動作をしているというわけ
stageに登録しないとか色々解決法はあるけど元のコードを変えないように書くなら
stage.addEventListener(MouseEvent.CLICK,focus_handler);
function focus_handler(evt:MouseEvent) {
if (evt.target==this) {
stage.focus=this;
} else if (evt.target==stage) {
stage.focus=null;
}
}
他のとこクリックしたらフォーカス勝手に外れるみたいだからこれでよかったわ stage.addEventListener(MouseEvent.CLICK,focus_handler); function focus_handler(evt:MouseEvent) { if (evt.target==this) { stage.focus=this; } }
772 :
Now_loading...774KB :2011/06/15(水) 20:13:16.89 ID:ZStvRRIR
AS2.0なんですが、 PostgreSQLで取ってきた複数レコードをPHPを介してFlashに出そうとしています。 この場合、PHPのところで、複数レコードたまるので、これを一気にFlashのほうに 渡したいのですが、その場合、 ID=31&name=Suzuki&address=Tokyo&ID=32&name=Yamamoto&address=Osaka&ID=33&name=Sato&address=Fukuoka のようにべろべろーんと長い文字列で、送るのは簡単なのですが、 受けるほうが例えばreceive_LV.ID、receive_LV.name、receive_LV.address としていると、最後のレコード(この場合ID33のもの)しか受け取ることができません。 べろべろーんをチョキチョキsubstringで切って、自分でArrayにせっせと入れるのもできるのですが、 何かもっとぱっと簡単に、PHPのforeachのように連想配列などで取り出すことはできないのでしょうか。 Flashのfor-inは取り出すとき順番が狂うそうで、苦戦しています。 よろしくお願いします。
AS2ってsplitってあるよね。 じゃぁ長い文字列で送って、'&'でsplitしてできた配列の要素を また'='でsplitして、Objectに突っ込むようなメソッド作れば 結構簡単に対応できそうなんだが。
774 :
Now_loading...774KB :2011/06/15(水) 21:02:44.11 ID:ZStvRRIR
>>773 さま
レスありがとうございます!
そうなんです。splitとsubstringでべろべろーんをチョキチョキ切っていたのですが、
なんとかこの長い文字列から解放されたいと思っています。やっぱり無理でしょうか?
一応できたのでこれでもいいかとも諦め気味なのですが…
ためしに今for-inで取り出してみたら、見事に順番がめちゃくちゃになっていました!!
PHPのforeachは順番が狂わないのにASはダメダメですねww
775 :
Now_loading...774KB :2011/06/15(水) 21:10:38.33 ID:ZStvRRIR
あきらめてべろべろーんをチョキチョキすることにしました。 ありがとうございました!
>>760 ということはFooはDisplayObjectを継承したクラスでないと
Foo.addEventListener(Event.ENTER_FRAME, ○○);で登録した関数は実行されないということでしょうか?
画面に表示させるオブジェクトではないのにDisplayObjectを継承するのは無駄が多いと思うのですが他の方法はありませんか?
>>776 一番軽そうな?ShapeつかってaddChildしなければそんなに無駄じやないんじゃないかな
AS3の質問なのですが、 タイムラインで定義している関数を.asファイルのクラス内から 実行することって可能ですか? 可能でしたらどのようにすればいいのでしょうか? 初歩的な質問かもしれませんが、ずっと出来なくて凄く悔しいです・・・・。
>>778 タイムラインで定義せずにasファイルでpublic定義してそのasをライブラリのアイテムのプロパティの基本クラスにするとか
mcならMovieClipを継承して作ってさ
今どういう構成でどういう書き方してるか知らんけど、普通に呼べんじゃ? Loaderに読み込んだ奴とか?
>>777 試してみます。ありがとうございました。
>>779 その場合は呼び出し側にはどういう風に記述すればいいのでしょうか?
>>780 1フレーム目に
function testfunc():void
{
trace("from .as");
}
と記述し、MyClass.asファイルには
MovieClip(root).testfunc();
みたいに書いています。
var myclass:MyClass = new MyClass();からのaddChildで配置しています。
むわー!!コンストラクタの時点では呼び出せないんですね。。。 うへぇ・・・事故解決しました。。。
Progressionって凄いね。 ASあんまり分からなくても 色々できる。
trace(4 + (2 < 1) ? 0 : 4); 上の結果が0と出力されるのですがなぜですか?
>>785 trace(4 + (2 < 1) ? 0 : 4);
優先順位順に処理すればなんの問題もないけど
2<1...false
4+false...4
4?0:4...0
2<1がtrueで4+true=5 数字の0以外はtrue扱いされるから true?0:4となって0が出力される。 trace(4 + ((2 < 1)?0:4)); とすれば求める結果が得られる。
先に答え出てたw しかも間違ってたし。最初のtrueじゃなくてfalseだったね…。
AS2.0でPCのフォルダーから画像のアップロードができる画面を 作ろうとしているのですが、PCのフォルダーを開く文法がないようです! JAVAScriptか何かでしないといけないのでしょうか? あとASを直接MySQLにつなげるライブラリとかないのでしょうか。 よろしくお願いします。
ぐぐったらASSQLというのを見つけてしまいました。 他にもあればお願いします。
IMEの無効化って毎フレーム監視するしか方法無いんかね?
792 :
768 :2011/06/19(日) 14:15:25.36 ID:jldIQLiX
>>770 有難うございます。お教え頂いた記述でOKでした。
確認ですが、
「stageにイベント登録してるからfocus_handlerはクリックするたびに計五回呼ばれてんだよね」
とは、イベントフローに由来する現象という解釈でよろしいでしょうか?
>>792 んー。
stageに複数インスタンスからfocus_handlerを登録してるから
stageのどこをクリックしても五通りfocus_handlerが呼ばれる
これがたとえば各々のインスタンスに登録されていれば各々のインスタンスをクリックしたときに
各々のfocus_handlerが一回だけ呼ばれる
ってことじゃない?
textareaの挙動がおかしくてこまっています。教えてください。 adobe flash cs5で、textareaのコンポーネントを二つ配置します(A,Bとよぶ)。 Aの方に適当にテキストを入力して垂直スクロールバーを表示させた状態にしてから、 Bをクリックしてフォーカス移動させると、Aの方のverticalScrollPositionがリセットされてしまいます。 フォーカスを移動させても、Aの方のverticalScrollPositionがリセットされないようにするにはどうしたらいいですか? ちなみに、Bの方のウィンドウ枠をクリックしてフォーカスを移動させると正常に動作するようです。
>>793 なるほど、5世帯のアパートの壁を蹴ったら、全世帯が怒って出てくるけど
1世帯のみをピンポンダッシュしたらその世帯からしか怒られないってことですね。
>>785 >>786 よくわかりました。ありがとうございました。
(2 < 1) ? 0 : 4 の部分が先に実行されるものだと思い込んでいました。
>>796 そだね。
ビット演算とかも意外と優先度低いからきをつけて
AS3の質問です。 stage.addEventListenerでEventのマウスダウンを設定しているのですが、 Firefox, Safariなどではちゃんと動作するのにIEだけ異常な動作をします。 具体的に言いますと、ステージに配置した別のボタンをクリックすると それ以降はマウスダウンを検出してくれなくなります。 同じ条件でもIE以外のブラウザでは特に問題なく動きます。 問題のボタンはMovieClipの中にボタンインスタンスを配置しており、 フレームアクションで button.addEventListenerでCLICKを設定しボタンを実装しています。 ボタンのアクションで特に不自然なことはしていないと思うのですが、 なぜIEだけ正常に動作しないのか見当のつく方はいませんでしょうか? もしかしたらHTML側に原因があるのかもしれません。 IEでもhtmlではなく、swfで直接開くと正常に動作します。 htmlはパブリッシュしたものから変えていません。 ちなみにファイルはネットワーク上に上げて、 インターネットを通してみています。 本当に困っているので、どなたか助けてください。。。
ステージの透明化が原因でした。すみませんでした。 ちくしょう・・・
>>800 透明化してるとIEだけそうなるの?
共有のために教えてくださいな
ボタンやテキストフィールド使うムービーでwmodeをtransparentにするのはやめたほうがいい。 いろんなブラウザでいろんな変な動きする。
firefoxのいつだかのバージョンではレイアウトも崩れる地雷
>>801 ためしにFLASHを透明化でパブリッシュして、
HTMLのFLASH上で右クリックをしてみて。
普通はFLASHのメニューが出てくるけど、IEだけブラウザの右クリックメニューが出てくる。
ステージの最下層にステージと同じ大きさの透明MCを配置すれば希望の動作になったよ。
>>802 長い間ドツボにはまりました。
こういうときって、2chに書き込んだ瞬間事故解決する事がおおい・・・
>>790 やめとけ。PHPかJava使って、サーバ側で書いた方が絶対楽。
AS1.0及び2.0だと var hoge = 1; _root.onMouseDown = function(){ trace( hoge ); }; AS3.0だと import flash.events.MouseEvent; var hoge:int = 1; var mouseDown:Function = function( e:MouseEvent ):void{ trace( hoge ) }; stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseDown ); ずっと疑問に思っているのですが、 それぞれのhogeがGCされるタイミングはどういう時なのでしょうか。 onMouseDownとmouseDownがhogeの参照カウントを1増やしているのでしょうか。 (つまりonMouseDownとmouseDownがGCされればhogeもGCされる・・?)
808 :
Now_loading...774KB :2011/06/20(月) 22:17:38.60 ID:vKfgtwiR
やばい。超やばい。 ティッシュがない。 トイレットペーパもない。 これはやばい。 どのくらいやばいかっていうと、 PCと携帯同時に使えなくなったくらいやばい。 どうしようお母さん。 もう生きるか死ぬかの瀬戸際なんだけど。
クロージャの解説見に行ったけどワケワカんねえw ローカル変数が維持される?? 比較的長いコードで1回しか使わないフラグをメンバ変数にするのがイヤな時なんかに 役に立つのかな? そんならじっくり覚えてみたいけど
>>809 そうだけど、GC対象にできるチャンスは少ないからそのフラグとおなじところに重いbitmapData(FP11からはサイズ制限なくなるとか)があったらそれも保持しちゃって大変になるかもよ
ってことかね
同じところって そのFunction型の変数で参照した先のスコープ1,2のとこに Booleanが1個だけあれば問題無いんだよね? ちょっとメソッド内で使うローカル変数の一時フラグのサンプルコード書いてもらえないだろかw テストしてみたいw
>>807 からもってきたけど
package
{
public class ClosureTest2 extends Sprite
{
public function ClosureTest2()
{
initialize("DEFAULT");
}
private function initialize(execMode:String)
{
var m:String = execMode;
stage.addEventListener( MouseEvent.CLICK,
function(e:MouseEvent)
{
trace(m);
});
}
}
}
これこそよく使われるクロージャじゃね?
クロージャを宣言したところのローカル変数が使える
このリスナー関数をインスタンスのメソッドにしちゃうとインスタンスメンバにしかアクセスできない
Flash CS5.5でコードヒントが出なくて困ってます。 新規作成でActionScript3.0のflaファイル作成。 test.flで保存。 新規シンボルでBox(AS書き出し)を作成。 シーンに、さきほど作成したシンボル(Box)をインスタンス名boxで配置。 test.flのドキュメントクラスをTestとしてTest.asを作成+保存。 Test.asを編集しているときに box. と入力しても、コードヒント(MovieClipのプロパティ)が表示されない。 同じことをFlash CS5ですると、コードヒントが表示されます。 解決方法があれば教えてください。
URLLoaderを使って外部ファイルをダウンロードしているのですが、 プログラムがダウンロードに夢中すぎて、その間クリックイベントが無視されているような気がします。 ステージをクリックしたらダウンロードを中止(url_loader.close();)するようなプログラムにしているのですが、 クリックイベントよりもダウンロードを優先し、ダウンロードが終了したら、遅れてクリックイベントが処理される動作になってます。 クリックイベントを優先したいのですがどうすればいいのでしょうか? クリックでダウンロード開始、クリックで中止、なので、 ダブルクリックすると本来ならダウンロード開始して速攻でキャンセル、という動作のはずが、 ダウンロード終了後、もう一度ダウンロードしてしまいます。。。
クリック(MOUSE_UP)のメッセージが処理されたときは、絶対にDL完了後です。 loaded:420493, total:420493 stage.addEventListener(MouseEvent.MOUSE_UP, MouseLDownFunc, false, 100, false); addEventListenerの第4引数の優先度を1にしても、100にしても変わりません。 URLLoaderのほうは url_loader.addEventListener(Event.COMPLETE,finishLoad); url_loader.addEventListener(ProgressEvent.PROGRESS,progressLoad); で優先度をしていしていませんが、優先度はデフォルトで0です。
まず、MOUSE_UPなのに MouseLDownFuncなのは気になるなw そのダウンロードは結構時間かかる処理? とりあえず最小構成のソース出してみてよ
>>817 一番初めコーディングした頃はMOUSE_DOWNあててたんです。
その名残です。
[1frame]
var url; // XML(SVG)ロード用
var url_loader; // XML(SVG)ロード用
[2frame]
nothing...
[3frame]
stop();
var path_str:String;
path_str = "logo_001.svg";
url = new URLRequest(path_str);
url_loader = new URLLoader(url);
url_loader.addEventListener(Event.COMPLETE,finishLoad, false, 0, false);
url_loader.addEventListener(ProgressEvent.PROGRESS,progressLoad, false, 0 , false);
function progressLoad(event:Event):void{ if(cancel_flag) { // ステージクリック以外にもcancelする方法があるので url_loader.close(); } } function finishLoad(event:Event):void{ trace("load完了!!"); } function MouseLDownFunc(event:MouseEvent):void{ if(url_loader != undefined){ trace(" loaded:"+url_loader.bytesLoaded+", total:"+url_loader.bytesTotal); // ここで全DL完了しているが if(url_loader.bytesLoaded != url_loader.bytesTotal){ try{ url_loader.close(); } catch (e:Error) { trace(e.message); } return; } //DL中だったらキャンセルして終了だけど、そうじゃなかったら再DLするよ。 gotoAndPlay(2); } 以上が最小限のソースです。
>>819 クリックイベント無視ってことは
まず
function MouseLDownFunc(event:MouseEvent):void{
trace("click!");
if(url_loader != undefined){
って書いてもload中だとtraceされないの?
>>820 そうですね。loadが終わった後、初めて処理されてclick!って出ます。
非同期じゃなくて完全に同期じゃないかこれでは・・・。
イベント型の意味がない・・・
ロードってのはサーバ間とのやりとりで想定外のエラーとかよく出るから エラー時の処理なんかを用意したり柔軟な作りにしなければならんのだ さらにロード中はなるべく他の処理は行わない方が吉なのだ というわけでクリックイベント無視なんてのは… 許してやれ
>>821 Loaderで外部ファイル読み込んでるけど、
こっちはロード途中でもマウスイベント受け取ってるけどな
URLLoaderだと挙動違うんかな?
ロード中に他の処理を行わないようにできますか?
>>824 できると思うけど
それこそ、処理の前にロード中かどうかのチェックを必ず行うとか
i:uintよりi:intでループ回す方が速くなるのはなんでなのよ?
やっぱりコンプリートフラグのようなものを作るのが良いでしょうか もし停止できるならそれもやってみたいと思っていました 回答どおりチェックでやってみます。ありがとうございました
>>826 うろ覚えだけどそれ昔の話じゃなかったっけ?
実測?
あるクラスの中からしか参照できないクラスを作ることはできませんか? 一つのpackageの中には一つのクラスしか作れませんし、privateなクラスはそもそも作れないので困っています。 下のようにするとBarはFoo以外のクラスからも参照される可能性があるので他に方法はないでしょうか? package { public class Foo { public function Foo(){ } } } internal class Bar { public function Bar { } }
>>829 Actionscript Singletonでクグれ
といいたいとこだけど、パッケージ外のって他ファイルから参照されないんじゃないの?
>>831 こうすると動いた
var urlloadertest:URLLoader=new URLLoader();
urlloadertest.dataFormat=URLLoaderDataFormat.VARIABLES;
urlloadertest.load(new URLRequest("data.txt"));
urlloadertest.addEventListener(Event.COMPLETE,frame01);
function frame01(e:Event):void {
trace(urlloadertest.data["day"]);
}
読み込んでからフォーマット指定しても遅いってことかな
ありがとうございます!読み込みしました!
834 :
Now_loading...774KB :2011/06/23(木) 02:00:57.42 ID:nOk0+WmU
AS2です。Flash Player10.1や10.3で表示すると、以下のように配列に値を入れても undefinedになってしまって、中身が配列に入らないようなのですが、FPのバグか なんかでしょうか?FP6や8では中身がちゃんと入ります。なお記述は1フレーム目です。 //array宣言 my_array = new Array(); my_array[0] = new Array(); my_array[1] = new Array(); my_array[2] = new Array(); ・・・ my_array[9] = new Array(); function f_random_array () { for (i = 1; i < 10; i++){ for (j = 1; j < 5; j++) { m = Math.floor(Math.random()*4); n = Math.floor(Math.random()*4); my_array[i][j]= string(m) + "," + string(n); //配列に乱数mとnを入れる }//j-loop end }//iloop-end }//end of function f_randomarray();//functionを呼び出して配列の中身を入れる FP10系の例のメモリ最適化機能と関係があるように思うのですが、 どうすればFP10でもうまくいくか教えてください。お願いいたします。
835 :
Now_loading...774KB :2011/06/23(木) 02:04:05.50 ID:nOk0+WmU
f_randomarray();は今書き込むとき打ち間違えました f_random_array();です。 よろしくお願いします。
>>834 細かくtraceしてみて
my_array[i][j]= string(m) + "," + string(n);
直後にもう入ってないの?
837 :
Now_loading...774KB :2011/06/23(木) 02:14:04.89 ID:nOk0+WmU
>>836 さま
}//j-loop end
}//iloop-end
ココ←で出力
}//end of function
上の場所で出力しましたが、FP10.1や10.3だと何も出てきません。
ちなみに開発環境やFP8,6では出るのですが、まったく謎です。
なお、
}//end of function
ココ←
f_randomarray();//functionを呼び出して配列の中身を入れる
だとまだ配列を作る関数を呼び出してないので、開発環境でも何も
でません。
>>837 レスのASコピペして、CS3で同様のFlashを作って
ブラウザ(FlashPlayer10.2.152.26)で見てみたけど
配列の値は取り出せたよ
参照方法が正しくないとかいう可能性は?
2.0はエラーあんまでないからなあ 最適化されてても参照残ってるものがかってに殺されるとは思えん
840 :
Now_loading...774KB :2011/06/23(木) 11:38:19.12 ID:nOk0+WmU
>>838 さま,
>>839 さま
そうなんですか!?
うーん、ではもう一度良く自分のものをみてみます
わざわざ確認してくださってありがとうございました!!
共有オブジェクト(SharedObjects)が一定時間経つと消えるようになってしまいました 今日FlashPlayer更新しろって来たので更新したらそんな状態になったのですが… なにか心当たりがあったら教えてください よろしくお願いします
>>841 それきっとブラウザのせい。
時期は忘れたけど、ちょっと前からSharedObjectsが
Cookieに含まれるようになったみたい。
設定変えれば消されなくなるけど、他のゴミCookieも
残るのでオススメしない。
面倒だけどSharedObjects開いて必要なファイルは
バックアップ取るのが無難。
自分は某ゲームのセーブデータがある日全部消えてて
発覚したっていう…orz
レスありがとうございます まじですか ゲーム作ってるんですが パスワード方式とかにしないとダメなんですかね…やばいw
おぉ。FileReferenceなんてあるんだ これがベターですかね ありがとうございます
うぃ。2.0なんか使えないっす
例えばAbstractParticleみたいな描画オブジェクト基本クラスを作るときに 1.Spriteを継承する 2.Spriteのインスタンスを内部に含める どちらが正しいクラス設計だろうか
どちらが正しいかは設計によるんじゃない Spriteのインスタンスを保持したObject継承クラスだったら外から座標動かせないよね Spriteインスタンスをpublicにするかパブリックメソッド作らなきゃならない 単純に継承で済むときは継承にしてインターフェースとか絡んでくると保持にするかな
すみません、根本的に間違っていたら教えて欲しいのですが、 var loader_obj : Loader = new Loader(); var info : LoaderInfo = loader_obj.contentLoaderInfo; info.addEventListener (ProgressEvent.PROGRESS,LoaderInfoProgressFunc); function LoaderInfoProgressFunc (event : ProgressEvent):void { trace ("読込:" + event.bytesLoaded + " of " + event.bytesTotal); if(327680 < event.bytesLoaded) { try{ loader_obj.close(); }catch(e:Error){ trace(e.message); } } } info.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc); function LoaderInfoCompleteFunc (event : Event):void { trace ("読み込み完了"); } info.addEventListener (IOErrorEvent.IO_ERROR,LoaderInfoIOErrorFunc); function LoaderInfoIOErrorFunc (event : IOErrorEvent):void { trace ("ファイル入出力のエラー:" + event.toString()); } var url : URLRequest = new URLRequest("img/test.jpg"); loader_obj.load(url);
>>850 の出力結果が以下です。
読込:0 of 597443
読込:65536 of 597443
読込:131072 of 597443
読込:196608 of 597443
読込:262144 of 597443
読込:327680 of 597443
読込:393216 of 597443
cancel test
読込:458752 of 597443
cancel test
Error #2029: この URLStream オブジェクトには開いているストリームがありません。
読込:524288 of 597443
cancel test
Error #2029: この URLStream オブジェクトには開いているストリームがありません。
読込:589824 of 597443
cancel test
Error #2029: この URLStream オブジェクトには開いているストリームがありません。
読込:597443 of 597443
cancel test
Error #2029: この URLStream オブジェクトには開いているストリームがありません。
読み込み完了
僕のイメージだと、close()した後は終わると思ってたのですが、
close()以降も読み込みを続け、読み込み完了イベントを迎えます。
途中で読み込みをやめるにはどうすればいいのでしょうか?
>>852 なるほど、ネット経由じゃないとだめなんですね。
ありがとうございます、ネット経由で無事動作しました。
しかし、何でなんだろう・・・。
ダウンロードのシミュレートでも途中で止まらないんだっけ?
>>854 それでも止まらなかったですね。
何仕様なんだ・・・。
ネット環境がない場所では実験できない・・・
856 :
Now_loading...774KB :2011/06/25(土) 16:56:34.97 ID:8FKYSQyl
質問 ターゲットMC.gotoAndPlay( "ラベル名" ); でMC内にラベルが無い場合エラーが出るよね? CS3以前では出なかったんだけど… CS4以上からは出るようになったのかな? エラー回避するにはどうしたらいいの?
存在しないラベル名なんか指定するなよ
地味に存在しないラベルにgotoした場合の挙動を知らない
レスどもども CS3時代に作った作品をCS5でアップデートする時に引っ掛かったエラーなんだよな 不特定多数のMCに一斉にアクセスしたい場合なんかがあるんだって… ラベルが無いのはそのまま無視してくれりゃいいのにさあ 結局 currentLabelsでArray返してもらってnameプロパティを1こづつ判定して目的のラベルが存在してたら処理 って感じにしますた 処理重くなるってのorz
不特定多数のMCに あるラベルが存在するMCはそのラベルに行けって命令を出したくて いままでは全部に行けって言ったらラベルがないやつは大人しくしてたけど cs5ではラベルないやつがエラー吐きやがる ってはなしだったの?
action scriptって覚えてて損のない言語ですか?これからもネットの主流になるんでしょうか?
OOP言語という意味でJavaと似てるから覚えればJavaにも応用が効く だたしAS3に限る 主流になるのかはわからん
javascript > actionscript > javaアプ > html5 主流 動画界では主流 廃れぎみ 存在がうんこ
javaに似てるよって言うとjavascriptだろwwwって馬鹿にされるんだけど どっちに似てるのん?
今はJavaの方が似てるかな まあ今からやるなら圧倒的にjavascriptだろ
またないすんのことも忘れないで上げてください(´д⊂)‥
867 :
Now_loading...774KB :2011/06/26(日) 22:24:22.55 ID:xx9q/52c
こんばんわ。 AS2.0ですが、テキストフィールドに何かを入力させた後、 そのテキストフィールド上でEnterキーを押せば その入力を変数で受け取るようにしたいのですが、 テキストフィールド上でEnterキーを押すとイベントが 起きるというのはどうやってやるのでしょうか? それらしいプロパティがテキストフィールドにはないようですが。 どうしても送信ボタンを別途作らないといけないのでしょうか?? よろしくお願いします。
868 :
Now_loading...774KB :2011/06/26(日) 22:54:52.38 ID:xx9q/52c
isDown(13)でEnterキーが押されたことが分かるようなのですが、 これが特定のテキストフィールドで押されたかどうかをどうやって知るのかが ハテナ?です。リスナーでもなさそうですし… よろしくお願いします。
869 :
Now_loading...774KB :2011/06/26(日) 23:33:50.57 ID:xx9q/52c
自己解決しました。 Selection.getFocus()と組み合わせればできそうです。 ありがとうございました。
ActionScript(flash)は、Webサイトというよりは、もうコンテンツの方が多いな。 ビューワーとか、ゲームとか。 でも入りやすい言語だと思うし、他にもそこそこ似てるから、ASというかflash環境は、とっつくにはよさそうだけど。
AS3は応用効くから優秀だけどさ、 AS2の存在価値が分からん 未だにAS2で頑張ってる奴ってなんなの?
ゲームに使えるライブラリなんかお勧めのってある? 今使ってるのはtweenerと物理・3Dライブラリぐらいかな 他にも便利そうなのとかあったら何でもいいので教えてください
過疎?ってるけどライブラリスレがあるぜ SiON(音楽) そうめん(非同期処理) progression(場面遷移) stardust(パーティクルエフェクト) おもしろいのはいっぱいあるね
そうめんってなんかわけわかんなけいど凄いな ゲームで使ってるサンプルとか探したけど見つからない でも使ってみたい
>>874 画像ロードするときに楽だったり。
状態遷移図的なものが書けるゲームならうまく使えるかもねー
SiONはMMLが書ければすごい使えそう
動作保証が聞いてるAS2ともいうけどな
プログラミングの世界では安定動作こそがベストとされている
よって
>>871 と
>>876 は池沼という定義です
AS2は自由度高いのがメリットにもデメリットにもなるんだよな
でもAS3のほうが高速だよね
flashで安定も糞もねーよwww
なんか質問したいんだけどたいして質問することがない・・・
凄い勢いで答えて欲しいんだけど 例えばPLAYERというクラスを作って100人ぐらい一気に追加したい時に var player:Array; for(var i=0; i<100; i++){ player[i]= new PLAYER(); } ってやるとエラーが出るのはどういうこと?
ちょっとしたくだらない疑問でも質問してみたら?
それarray宣言しただけで作ってなくね。
ああ、Array = new Array()にしたら解決しました
そのうちエラー読んだら大体原因わかるようになるからがんばれ nullのうんちゃら
flash側でドキュメントクラス指定したら、例えばmainっていうクラスだったら mainのインスタンスが勝手に生成されますよね? このインスタンスにアクセスしたいんですけど、どんな名前でアクセスすればいいんですか?
どっからアクセスすんの?
別のパッケージのクラスからです
その別のパッケージのクラスは結局MainかMainが保持してるクラスが作るんだから如何様にも渡せるんじゃないかな たとえばMainの最初で Aclass.main=this; Aclassで public static var main:Main; ってやっとけばAclassのインスタンスはtrace(main);できる
891 :
Now_loading...774KB :2011/06/28(火) 11:56:56.91 ID:oZATbYSQ
loadClipって_root以上の階層じゃないと読み込めないの? 画像を読み込む際に階層1以上なら読み込めるんだけど_root.mcとかやると 何も表示されない。Error opening URLって出てくるから読み込みはしてるんだろうけど AS2.0 PLAYER 10
>>890 なるほど、参考にしてやってみたらできました。ありがとうございます。
背景が透過するflashの事なんですが、flashの下に見えている htmlを、画像として取得する事はできないでしょうか。背景を透過にした状態で bitmapData.draw(stage); なんてのを試してみましたが、stageの上に乗っているオブジェクトは取得できても 下にあるhtmlで記述されている部分は取得できませんでした。物は試しに bitmapData.draw(stage.parent); も試したけどダメでした(stage.parent == null でした)。 何かいい方法はないでしょうか。
AS3覚えておくとAndroidアプリ作れるじゃん AS2以下では無理
>>893 むりだとおもー
透明なswfの下のhtmlになんか描いてあるの?
>>891 階層ってtargetの話?
URLエラーならURLが間違ってるんじゃないの?
クラスの中からインスタンス変数を宣言することってできますか? public class A { public var mya; public function B(){ var nya; <---- これをローカル変数でなくmyaみたいなインスタンス変数として宣言したい }} dynamic classにしたらできることを確認したんですが、 宣言がないとエラーとか怖いので他の方法があったら教えてください。
できない。 >宣言がないとエラーとか怖いので だからDynamicクラスじゃないとできないようにしてあるわけだが。 クラスの中に宣言するインスタンス変数を なぜ、メンバ関数で宣言したいと思うのかがわからない。 他にやりようがあるはずだが。
Object型をインスタンス変数に持っとくとか いずれにしろ型チェックしたいならダイナミックに追加なんてしないことだ
えーできないんですか。 ・・・別の線を考えて見ます。ありがとうございました。
逆にどういう時に使うのか
できると思う方が不思議なんだが…
すいません、これで最後の質問にしますが、リファレンスとか見るとオブジェクト型は 参照渡しと出てるんですが public class A{ public var ob:Object=new Object(); public function A(){ B(ob.mcTest); trace(ob.mcTest); } function B(o:Object){ o=MC(); <----FLASH CSで作ったムービークリップ }}}} って書くと、ob.mcTestがundefinedで、Bで入れたはずのムービークリップが入っていないんですが どういったことですか?
>>903 ob.mcTestってダイナミックに加えたObject型?
o=MC()ってどういう意味?
>>903 MC()って何?関数?
obにob.mcTestなんていつできたの?
要するに、なにをやりたいの?
えっとMC()はFlashCSでムービークリップをクラスに変換して呼び出せるようにしたものです。 ob.mcTestはOBject型の変数obにmcTestという名前をつけたものです。 やりたいのはob.mcTestをBに送ってMC()のインスタンスを代入させてかえってこさせたいのです。
907 :
893 :2011/06/28(火) 18:07:52.43 ID:DMnHDW45
>>895 返答、ありがとうございます。
やっぱり無理ですか。flash側が描画に利用しているのは間違いないので
なんとか取れないかと思ったのですが。
>透明なswfの下のhtmlになんか描いてあるの?
汎用のスクリーンショット加工ツールみたいな物を作りたいと思って
html5やjavaなんかも含めて検討中なんです。
もうobって変数名ついてんじゃん… public class A{ public var ob:Object=new Object(); public function A(){ B(ob); trace(ob); } function B(o:Object){ o=new MC(); }}}} CSのライブラリのmcにリンケージでActionScript用に書き出しにチェックを入れてMCというクラス名をつけた時ならこういうことはできる けどObjectクラスの変数に入れてるからobを通してMovieClipのメソッドは実行できない traceの結果もObjectになる まずはstrictモードにしましょう
>>907 ヤクザwwwwww
んー?flash側が描画に使ってるかな。
ただ透過した下の背景のことでしょ?
いまいち欲しい部分が分からない
>>906 > ob.mcTestをBに送ってMC()のインスタンスを代入させてかえってこさせたい
何のために?
ムービークリップをクラスに「変換」というのもよくわからんが
なんでObject作って、そこにmcTestという変数定義して、そこに代入するの?
単に参照とりたいだけなら、そんなことせんでもいいような気がするんだが…
そもそも、そのMovieClipはいつ、どこでnewされて、どのDisplayObjectContainerに
addChild()されるのか?
その参照はどこも保持していないのか?
911 :
やっちゃん :2011/06/28(火) 18:40:04.06 ID:DMnHDW45
>>907 >んー?flash側が描画に使ってるかな。
あくまで予想だけど、透過処理行うために下地のビットマップは内部処理には
必要だと思ってます。ただ、as3からそれにアクセスできるかどうかは全然別
問題ですよね。
欲しいのはFlashの下に書いてあるHTMLのレンダリング結果です。
<div><object ... flashの設定。スタイルシートで以下のhtmlと重なるように配置></div>
<p>ほげほげ</p>
<p>ふがふが</p>
こんな風に書いてあった時の「ほげほげ」「ふがふが」の部分が画像として欲しいです。
めちゃくちゃですいません。元のソースでo=new MC()のnewがぬけてました。
やりたいことはほぼ
>>908 なんですが、MCクラスのインスタンスを入れたいのは
obuject型配列のobではなく、obの配列のmcTestに入れたいんです。
でも何故かBに送ってtraceするとundefinedが帰ってきます。
>>911 なるほど。
htmlならなんかと連携して取得できるだろうけど
>>800 の例もあるからなあ
>>912 その配列はObjectのメンバである意味あるの?
ならばもうObject継承したクラスつくってインスタンス変数に配列持たせたほうが厳密じゃないかな
public class A{ public var ob:Object=new Object(); public function A(){ ob.num=1; B(ob.num); trace(ob.num); } function B(o:Object){ o=2; }}}} こっちのほうがわかりやすいですね。 これでtraceの結果が1になってしまうのがおかしいです。
>>914 それはおかしくないだろ
Object渡せば、ob.numにアクセス出来るけど
ob.numの値渡したら、oには1という値が代入されるだけで
ob.numへの参照は入ってないんだから
>>914 プリミティブは値渡しなの。
関数側でObjectとしてうけとるのもなんか変
public class A{ public var ob:Object=new Object(); public function A(){ ob.num=1; B(ob); trace(ob.test); trace(ob.num); } function B(o:Object){ o.test=new MC(); o.num=2; }}}} なら一応やりたいっぽいことできるけどObjectにダイナミックにメンバ入れると型チェックも効かないしやっぱりお勧めしない
そういうことでしたか・・・ obがObject型なのでob.numなどにしても参照が渡されると思い違いしていました。 ありがとうございます。
919 :
891 :2011/06/28(火) 23:34:08.95 ID:oZATbYSQ
>>919 俺は下も大成功したけど
ちゃんと_rootにmcあるの?
>>920 うん。オレンジ色の四角形が描いてあるけど。
MXで書き出してるけど関係ないよね
>>921 もちろんmcってインスタンス名つけてるよね?
>Flash MX 2004から、MovieClipLoaderクラスが実装されました。
MovieClipLoaderクラスを使って外部SWFやJPEGファイルをロードすると、その進行状況に応じて各種のイベントが発生し、それらのイベントに対応した情報を取得することができます。
また、複数のファイルを指定して、順次読込むことも可能です[*1]。本稿では、MovieClipLoaderクラスの使用について、簡単にポイントと注意点をまとめてご紹介します。
詳しくは、オンラインヘルプ[ActionScriptリファレンスガイド]の[MovieClipLoaderクラス]およびその各メソッドの項をご参照ください。
よくわからんけどMXでも使えるの?
>>924 mcの基準点が違ってて表示位置が違うとかいうことはない?
うーん。読み込むswfに問題あったりするのかな
アクセス先がjpg形式だと_root.mcに読み込めた playerが7だとpngは読み込めないって書いてあったけど階層が1だとpngも読み込めるし・・・ わけがわからないよ 環境 As2.0 MX2004 PLAYER7で書き出し
そもそも階層1ってどこだろう
>>927 なら、クロスドメイン制限にひっかかってるんじゃないの?
932 :
931 :2011/06/29(水) 00:27:09.24 ID:8YCs9v0v
unko
エラー言われましだけど
>>930 て思ったけど、レベル1なら読み込めてるのか
それなら、読み込もうとしてるswfが内部で_root参照してて
動作が適切じゃないとかかな
>>931 そもそも、読み込めないと判断する根拠はなに?
onLoadCompleteとかで確認してるの?
ムービープレビューだとエラー出ます
>>934 画像の読み込みだからそれはないと思いたいです
>>936 それなら、まずエラーの内容を書いてくれ
>>938 それ、URLが間違ってるとかアクセス制限があるとか、何らかの理由で
ファイルをロードできないっていってるじゃないか
最初にエラーを言ってくれれば、あれこれ考えずにすんだのに
>>939 ごめんなさい
でもswfから開くと_level1には読み込まれるって変じゃないですか?
まずローカルのswfでためしてはどうか
ローカルで_level1以上に読み込む分には読み込まれます。 _level0や_root上のMCを対象にしたら何も表示されないです。
>>940 本当にレベル1なら読み込めているのか?
実は、レベル1に読み込んだ時と_root.mcに読み込んだ時で、ファイル名などが
微妙に間違ったってことはない?
>>931 をローカルで実行したが(混乱するから存在しないファイル名は書かないほうがいい)、
同ディレクトリに作ったswfを、rootに配置したmcに読み込むことはできた
構造に問題はない
_root.mcに読み込ませる時に、ファイル名を間違ったくらいしか思いつかない
ふむ。こっちはローカルで大成功なんだが。
一字一句間違えてないけど
読み込みたいファイルが画像(jpg,png)なのがいけないんだろうか
あとはプレビューだとエラー吐いてくるくせに
trace(loader1.loadClip("
http://api.dan.co.jp/twicon/**** ", _root.mc));
だとtrueが返ってくる。どういうこっちゃ
>>945 pngって、FlashPlayer7くらいだと、読み込めなかった気がするが
あと、読み込もうとするディレクトリに2バイト文字があるとエラーになるとかいう現象も
昔あったような
2004のことはもうだいぶ忘れてしまったなあ
var account = "
http://api.dan.co.jp/twicon/homhom_bot ";
var loader1 = new MovieClipLoader();
loader1.loadClip(account, _root.mc);
var loader2 = new MovieClipLoader();
loader2.loadClip(account, 1);
これだと読み込むファイルはjpgだからなのか大成功
jpg,gif,pngで1と_root.mcで試したけどどれも表示されるな
>>946 じゃね
var account = "
http://api.dan.co.jp/twicon/miyasuke1 ";
var loader1 = new MovieClipLoader();
loader1.loadClip(account, _root.mc);
var loader2 = new MovieClipLoader();
loader2.loadClip(account, 1);
これだとpngで大失敗。
Playerが7でも_level1以上なら読み込まれる つまり2バイト文字が云々ってのが原因か
>>950 もしかしたら、そのpngファイルがちょっと壊れてるとか?
他のpngファイルでも同様なのか検証してみた?
ローカルのPlayerは10になってるんですけど
他のpngも片っ端から駄目でした
>>953 もし同じ方法で作られたpngならその方法やツール、そうでないなら
使ってるPCとかHDDとかアカウントとかFlashとか、なにかそちら独自の環境に起因する
問題じゃないか?
サーバにアップしても同様か検証してみれば、また何かわかるかも
和塩に上げてみたけど、やっぱりjpgの方しか読み込まれませんね
最近AS3.0始めた者です どうにもよく分からん Flashlite1.1は使えるし、モバゲーみたいなソーシャルアプリも開発してんだけど 今後スマフォなんかにも対応したいと思っているんで、やり始めたって感じですが どうにもしっくり来ないんですよね 一応2までは習得しています なんかいい覚え方ないでしょうか?
>>956 語呂合わせとか?
ねーよwwwwww
2.0とは似てるっちゃ似てるけど結構別物
2.0でもクラスベースでやってたなら楽かもね
とりあえずActionScript初心者wikiがおすすめ
三国志みたいなシミュレーションゲーム作る時ってクラスの設計は Worldクラス、Nationクラス、Regionクラス、Bushoクラス みたいな感じでいいんですか? なんか参考になるサイトがあったら教えてください
えーっと、今までは一つの配列オブジェクトで world.nation.region みたいに 世界の下に複数の国家があって、国家の下にさらに複数の地域があってみたいな ツリーで管理してきたんですけど、クラスを使って管理する場合はどうしたらいいんですか? Worldクラス一つ作って、そこで一つの配列オブジェクトで管理するのってよくないですよね? でもわけるとセーブする時とか面倒くさそうです。
961 :
960 :2011/06/29(水) 10:27:28.91 ID:Pso49myN
書き込んだらどっさりレス増えて、解決済みにレスしてた俺おわた
>>958 俺なら結構細かくクラス化しちゃう
同じファイルにたくさん書きたくない
いいのか悪いのかはしらんけど
例えばゲームでplayerクラス作って、配列変数に1000個ぐらいのインスタンスを作った時、 playerの情報をセーブ・ロードするのってどうすればいいんですか? playerインスタンスの配列変数とは別に、player情報の配列変数を作って保存するんでしょうか?
ファイルやsoに保存するって意味なら 俺は変換クラス作ってインスタンスから各情報をのプリミティブ値を抽出してそれらだけで再現できるようにしてそれを保存するよ
>>964 レスありがとうございます。なるほど・・・でもクラスで使う変数が百個とか多くなると
セーブもロードも面倒じゃないですか?
>>958 何かのいくつかの処理で「同じ変数を頻繁に使う」メソッドや関数を一つのクラスにまとめるのが基本じゃないかな
「細かくクラス分けする」ってのは他の作品にも流用が効く処理なら便利
>>959 その考え方で正しいと思うよ おれならデータベースクラスとして1個にまとめる
データベースなら1つのクラスが膨大になるのは仕方が無い セーブロードも1個のオブジェクトで済むし
クラスファイルが大きくなるのがいやならxml等でデータベースとして扱う
>>967 セーブもロードもそんな頻繁にするもんじゃないじゃん
操作したりなんか変更あるたびに倍の量保存するよりはセーブロード時にバーっと作っちゃたほうがメモリも処理もいいかなと思って
多少時間かかってもセーブロード時ってNow Loading... とかしても許されるかんじじゃん
現在の状態をByteArrayにして返す、ByteArrayから状態を復元するDataManagerクラスと
ByteArrayを受け取って保存する、ファイルを読み込んでByteArrayを返すIOManagerクラス
みたいなかんじにしてる
971 :
Now_loading...774KB :2011/06/29(水) 12:51:36.90 ID:B80sYTnu
ああー、根本的に勘違いしてたのかもしれません・・・、 今Player()クラスのインスタンスをplayer:Arrayに100個作って保存して playerをsharedObjectに突っ込んでみたらセーブもロードもできました。 インスタンス変数とかもちゃんと保存されてます。 クラスのインスタンスって普通に配列オブジェクトみたいにSOに保存できるんですね。 この方法でセーブロード行うのは何かまずいのですか?
AS3でURLLoaderでテキストファイルを読み込んでるんですが 読み込み完了イベントの時に以下の処理をしていて、変な動作をしています。 var arr:Array = ss_loader_obj.data.toString().split(/\n/); for(var i:int=0; i<arr.length; i++) { trace(i + ":" + arr[i]); } txtファイルの中身は 001.jpg 002.jpg 003.jpg なのですが、上のプログラムの出力結果が 0:001.jpg 002.jpg 003.jpg となってしまいます。i:がループの2回目から消えているのですが何故なんでしょうか???
>>972 クラスインスタンスまるごとよりは自分で必要なプリミティブ値を管理したほうが容量減ると思って俺はそうしてる
そのやり方でも普通にいいと思う
>>973 arr.lengthが1の時はきっとそう出力されるよね
つまりちゃんとsplitできてないと予想
とりあえずsplitしたあとtrace(arr.length)してみたらどうなる?
>>972 確認して、ちゃんとセーブ出来てるならいいんじゃないかな?
作りによってオブジェクトそのままだと出来ないのもあったりするから注意だけど。
>>972 やり方によっては、ゲーム内データにsharedObject参照が残ってて
どちらかの変更がそのままもう片方に反映されちゃう、ということもあるので
そのへんの注意は必要かも
>>974 arr.engthは3でした。
どうやら調べてみると、002.jpgと003.jpgの頭に
改行かなんか分からないものが入ってるっぽいです。
それが原因のような気がするのですが、これは一体・・・。
trace("test");
trace(arr[0]);
trace(arr[1]);
trace(arr[2]);
の出力結果が
test
000.jpg
001.jpg
002.jpg
みたいになります。。。
WINで作ったテキストファイルなら改行コードは\r\nだよ
>>978 ぬわーそうでしたか・・・。
\r\nで解決できました。ありがとうございます!!
AS3でLoaderを使って外部swfを読み込んでいるのですが、 読み込んだswfのwidthとheightが、読み込み元のステージの大きさになってしまいます。 var loader_swf:Loader = new Loader(); var url_swf:URLRequest = new URLRequest("slideshow.swf"); var info:LoaderInfo = loader_swf.contentLoaderInfo; loader_swf.load(url_swf); info.addEventListener(Event.COMPLETE, swfLoaded); function swfLoaded(e:Event):void{ slideshow.addChild(loader_swf); trace(loader_swf.loaderInfo.width + ";" + loader_swf.loaderInfo.height); } slideshow.swfは800*480で作っているのにも関わらず、 trace結果は800*500(呼び出し元のステージの大きさ)になってしまいます。 swfを元のファイルの大きさのまま呼び出すことは不可能でしょうか?
>>980 普通は元のサイズで読み込まれる
slideshowあたりが、拡大縮小されて配置されてるんじゃないの?
>>981 slideshow.flaのパブリッシュ設定で
HTMLのサイズをピクセル指定で800px*480px、
伸縮を拡大・縮小なしに設定しています。
まぁこっちはHTMLのほうの指定なのであまり関係なさそうですが・・・。
パブリッシュ設定のFLASHのタブには特にステージの大きさとか伸縮とかの
設定はなさそうですが・・・何か心当たりはありませんでしょうか?
ちなみに、slideshow.swfは拡大されていないので、 読み込み元swfのステージの中心に原寸サイズで表示されます。 (ムービークリップslideshowはステージの左上(0,0)に配置している空のムービークリップです。)
>>984 すまん、ちょっとよくわからんのだが、slideshow.swfが拡大されて表示されてるわけではないの?
slideshow.swfのステージheightが400で、表示サイズも400なのに、trace()すると500になってるの?
DisplayObjectのwidthとかheightってset可能だけど、結局中身の右端・下端の値になるんだよな 結構ハマったりするから要注意
「ある1つの関数の中からしか参照できない変数」を作りたいんだけどどうしたらいいんだろう クラス内で宣言したらクラス内の他の関数からも参照できるし、 関数の初めで var hoge:int=0; みたいにローカル変数として定義したら実行するたびに初期化されるから 無駄が多そう&前回の内容を引き継ぐ処理ができないから不便。他に何か方法ないかな?
>>987 ひとつの関数もったクラスにしちゃう
クロージャ利用する
最近流れ速いし次スレたててくるわ
>>985 なので、slideshow.swfのオブジェクトの外側に白色の空白ステージ(Wordでいう余白みたいなもの)がある感じになってます。
で、(0,0)がslideshow.swfの左上ではなくて、余白の左上なので、なんか表示がずれてしまいます・・・。
ずれてる分の座標を、スクリプトでずらして表示させれば応急処置になるんですけど、
どうしても気持ち悪いのでどうにかしたいです。。。
どうやらようやくActionScript3.0にも風が向いてきたようだな・・・胸が熱くなるな
scriptって名前がなんかショボいイメージでイマイチプログラミング言語の仲間入りできてない気がする
>>971 もあるしiPhone、Android、Stage3D、と風は吹いてる
SingletonにEventDispatcherの変数作ってそこ監視したりイベント送れば複雑な構成でも自由に行き来できる という方法が便利で最近使うんだけどやっぱだめかな?
>>996 それはたぶん、MVCアーキティクチャのC(controller)なんじゃないだろうか。と思う。
クラスAからBにb()やらせたいときは
Aで
Singleton.eventReciever.dispatchEvent(new Event("byareyo"));
Bで
Singleton.eventReciever.addEventListener("hoge",b);
みたいな感じね
>>997 調べてみたけどさっぱりわからん
デザパタって意外と自分で思いついて使ってるもんだよね
どこからでもアクセスできちゃうってオブジェクト指向的にダメなんだろうか