ActionScript 誰かが物凄い勢いで解答するスレ27
1 :
Now_loading...774KB :
2010/10/24(日) 12:40:45 ID:aGV7pB0h
2 :
Now_loading...774KB :2010/10/25(月) 00:06:31 ID:7UulMQM2
環境:FlashCS4をWinXP-Proで使用(AS3) 複数の値のどれか1つが変化したとき、それを感知して別の動作をさせるときの スマートな記述を探しています。 たとえば、 ●○◎ というMC(丸印の連続: 3色ダンゴみたいなもの)があった時、 これ自体をドラッグ移動させたとき(X,Y値の変化)、またはマウスホイール回転でMC の白丸を中心にした回転(Rot)、などでtrace("変化") を実行するものです。 ベタな方法としては、各値をテキストフィールドに代入してこれが変化したとき→trace や、過去の値を配列に保持しEvent.ENTER_FRAMEで随時新しい値と比較すること を考えました。 しかし、前者の方法では10個の監視項目があれば10個のテキストフィールドを用意 しなければならず、後者では常にフレームアクションが動作しているのでシステムに 負担をかけてしまいます。 こんな場合のスマートな監視方法には何がありますでしょうか?
>>2 そもそも値が変更されるアクションがわかってるなら
それをトリガーにしとけばいいんじゃないの?
4 :
974 :2010/10/25(月) 01:14:27 ID:uXUuuUnb
前スレの974です。 向きを変える所は一応出来ていて、今回はそこではないのでheroへの指示部分は省いています 画面の動きですが、カーソルボタンを押した際にキャラクターが動くのではなく壁が動くようにして移動を表現しています 分かりづらくて申し訳ありません
>>2 その方法って、どっちも毎フレーム監視してるんだから変わらなくね?
直接プロパティを監視した方がまだいいような。
っていうかドラッグでMC動かせるって事は、
その時点でMouseEventのリスナー関数があるんだから、
これが発生している間だけ監視すればいいんじゃないの?
独自のイベントを定義して発行する 監視するオブジェクトはそいつをリスナーに登録する
Flex SDKと組み合わせれば最強だな
ステージに何か一つでもテキストを作成してると、デバッグした時の出力に [SWF] C:\Users\User\Desktop\test.swf\[[DYNAMIC]]\1 - 2067 バイト (圧縮解凍後) [SWF] C:\Users\User\Desktop\test.swf\[[DYNAMIC]]\2 - 322606 バイト (圧縮解凍後) [SWF] C:\Users\User\Desktop\test.swf\[[DYNAMIC]]\3 - 358183 バイト (圧縮解凍後) [UnloadSWF] C:\Users\User\Desktop\User.swf\[[DYNAMIC]]\1 とかって出てくるんですが、これってどういう処理をやってるんでしょうか? なぜかこの状態だとLocalConnectionに失敗するようになってしまいました。 テキスト無しだと相変わらずうまく行くのですが…。 CS5 体験版です。
10 :
Now_loading...774KB :2010/10/26(火) 14:13:52 ID:57+cpWxK
すみません、最後の行の出力はUser.swfではなくtest.swfの間違いです。
11 :
Now_loading...774KB :2010/10/28(木) 05:18:15 ID:KLCq8val
配列データをバイナリで保存する方法で質問です。 WinXP,CS4(AS3,Player10) try 〜 catch で下のように書きました。 try { var dataArr:Array = [Math.PI,Math.sqrt(2.0),Math.sqrt(3.0)];//テストで3つの数値を配列に代入 var baArr:ByteArray = dataArr as ByteArray;//ByteArray化 var fileRef:FileReference = new FileReference(); fileRef.save(baArr, "test.math");//test.mathという名前で保存 } catch (errorEvt:Error) { trace("Error: "+errorEvt.message); } コンパイルではエラーが出なかったのですが、ボタンアクションで実行したところ、 traceは Error: data となってしまいます。 どこが問題でしょうか?
var baArr:ByteArray = dataArr as ByteArray;//ByteArray化 ってうまくいってる?nullが入ってるんじゃ?
13 :
Now_loading...774KB :2010/10/28(木) 08:46:27 ID:OA0SSHl/
質問です、失礼します。 オリジナルクラスのオブジェクトの、addChildとremoveChirdを繰り返す処理 をしているのですが、2度目のremoveChildのときに 「指定した DisplayObject は呼び出し元の子でなければなりません。」 というエラーが出ます。 そこで、 まずは検証のために、イベントリスナーでいうところの「hasEventListener」のような、 任意のオブジェクトがステージ上に存在するか否かを判別するメソッドを使いたいのですが、 そういうクラスはありますか? 例:hasChildという名前のメソッドがあると仮定したとき、 if(hasChild(オブジェクト名){ オブジェクトが存在するときの処理 } else { オブジェクトが存在しないときの処理 } という風に使いたいのですが……。
this.contains(オブジェクト名) でthisにオブジェクト名がaddChildされてるかどうかわかるよ
ざっくりとした質問になってしまいます。すみません。 「XX-CAKE」という、静止画像のおっぱいを揺らす事が出来るツールがあるのですが、 flash CS4の機能、または、Flash lite1.1で、同等の動きを再現したいです。 現在、胸部分にDisplacementMapFilterを使用して、 部分的にエフェクトをかけれるか調べている状況ですが、 この方法で「XX-CAKE」と同等の動きを再現することは可能でしょうか? もし、宜しければ、アドバイス、参照URL等を教えて下さい。
>>16 ありがとうございます。
参考になるので、そのサイトのソ−スを元に色々試してみようと思います
18 :
Now_loading...774KB :2010/10/30(土) 22:57:13 ID:RdBd1w58
ペンツールとかでシェイプとして作成した後に プログラムの上でシェイプを削除するにはどうすればいいですか?
>>18 単純にgraphicsで描画してるならclearすればいいんじゃないかな
movieclipに内包させてるならremoveChildで
20 :
Now_loading...774KB :2010/10/30(土) 23:18:48 ID:RdBd1w58
>>19 ツールで描いてからコンパイルしてプログラムで消したくって
this.graphics.clear()ではうまくいかなくて困ってます。
>>18 あ、おえかきツールみたいのじゃなくてflash上でステージに直接おいたものってことなら
stage.removeChildAt(0)
とかで消せる
シェイプが複数ある場合は
ステージにおいたシェイプの数だけforループでシェイプをひろって、
幅とか位置とかの条件式で判別して目的のシェイプを削除してね
すみません シェイプが複数ある場合はあらかじめムービークリップとかにしておかないと動かないですね・・・
23 :
Now_loading...774KB :2010/10/30(土) 23:27:31 ID:RdBd1w58
ありがとうございました!
AS2.0で配列のコピーについてです a = [1, 2, 3]; b = a.slice(); b[0] = "4"; trace(a); trace(b); これだと 1,2,3 4,2,3 と出てきてくれるので正しくコピーされたと 思うのですが、 a = {Name:"やるお", Job:"ニート"}; b = a.slice(); b["Name"] = "やらないお"; trace(a["Name"]+":"+a["Job"]); trace(b["Name"]+":"+b["Job"]); これだとbの方が2つともundefinedになってしまいます。 上記の場合だと、どのようにコピーすればいいのでしょうか?
>>24 a = {Name:"やるお", Job:"ニート"};
trace(a)
すると分かるけど、aの型がobjectになってるので
a = {Name:"やるお", Job:"ニート"};
b = mx.utils.ObjectCopy.copy(a)
b["Name"] = "やらないお";
trace(a["Name"]+":"+a["Job"]);
trace(b["Name"]+":"+b["Job"]);
これでOK?
2番目って配列じゃなくてオブジェクトじゃん、そりゃslice()なんて動作しないわ コピーしたけりゃfor eachとかでプロパティごとにやるしかないんじゃね?
27 :
Now_loading...774KB :2010/10/31(日) 02:50:08 ID:VP0TG1wF
ブロック崩しとか、シューティングとかって、タイマーイベントで制御していいのかな?
いいんじゃね?
29 :
Now_loading...774KB :2010/10/31(日) 03:38:58 ID:VP0TG1wF
>>28 タイマーイベントの中にメインループ書いて、そこで一律管理でいいよね?
やってみるわ
30 :
hy :2010/10/31(日) 08:59:35 ID:VPIo7lzQ
mac10.5 flash cs5 as3.0です。 ボタンにクリックイベントをつけてmcがフェードインで表示されるようにしたんですが、2回目以降はボタンをクリックしてもフェードインの処理がされないようにするにはどうしたらいいですか? btn_a.addEventListener(MouseEvent.CLICK, click_a); public function click_a(e:MouseEvent):void { container_mc.addChild(a_mc); /*else if (container_mc.contains(a_mc)) { container_mc.btn_a.mouseEnabled = false; }*/ //上の条件文ではダメでした a_mc.alpha = 0; a_mc.x = stage.stageWidth / 2; a_mc.y = stage.stageHeight / 2; a_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); } private function imgAlpha(e:Event) { e.target.alpha += 0.15; if (e.target.alpha > 1) { e.target.removeEventListener(Event.ENTER_FRAME,imgAlpha); } }
31 :
hy :2010/10/31(日) 09:00:54 ID:VPIo7lzQ
mac10.5 flash cs5 as3.0です。 ボタンにクリックイベントをつけてmcがフェードインで表示されるようにしたんですが、2回目以降はボタンをクリックしてもフェードインの処理がされないようにするにはどうしたらいいですか? btn_a.addEventListener(MouseEvent.CLICK, click_a); public function click_a(e:MouseEvent):void { container_mc.addChild(a_mc); /*else if (container_mc.contains(a_mc)) { container_mc.btn_a.mouseEnabled = false; }*/ //上の条件文ではダメでした a_mc.alpha = 0; a_mc.x = stage.stageWidth / 2; a_mc.y = stage.stageHeight / 2; a_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); } private function imgAlpha(e:Event) { e.target.alpha += 0.15; if (e.target.alpha > 1) { e.target.removeEventListener(Event.ENTER_FRAME,imgAlpha); } }
>>30 1回だけ反応させたいなら、クリックした時点で、removeEventListener()すればいいのでは?
33 :
hy :2010/10/31(日) 19:53:05 ID:VPIo7lzQ
34 :
hy :2010/10/31(日) 20:12:54 ID:VPIo7lzQ
>>32 複数のボタンA,Bがあった場合、別のボタンBをクリックして、その後またボタンAをクリックしたときは、
removeしたイベントをまたaddしたいのですが、
btn_a.addEventListener(MouseEvent.CLICK, click_a);
public function click_a(e:MouseEvent):void
{
container_mc.addChild(a_mc);
a_mc.alpha = 0;
a_mc.x = stage.stageWidth / 2;
a_mc.y = stage.stageHeight / 2;
a_mc.addEventListener(Event.ENTER_FRAME,imgAlpha);
btn_a.removeEventListener(MouseEvent.CLICK, click_a);
}
ボタンBも同様につくる
これでは、ボタンA、ボタンB、ボタンAとクリックした時click_aが実行されません。
removeの位置が悪いですか?
>>34 ボタンBをクリックしたとき実行する関数に、ボタンAにaddEventListenerする処理を追加する
removeの位置はそのままでOK
hasEventListenerを使ってボタンAにイベントが割り当てられているか調べる方法の方が
ボタンが増えた際に応用できそうですが
>>25 をやってみましたが、AS2.0では動作しないようですね。
ガリガリfor文でコピるのはどことなく格好悪いのでスマートな方法が
あったら教えて下さい><
>>36 書き忘れ
最初にimportしてね
import mx.utils.ObjectCopy;
まずAS2.0でmxパッケージが使えるのか?
>>38 他のクラス全部についてはわからないんだけど、とりあえずこれは動くはず
AS3ではエラー出るのでこのコードでは動かないし
AS2で実際にファイル作って動きを確認しました
>>37 ごめんなさい無理でした。
そもそもutils.ObjectCopyって部分の色が変わらないとです
なんだろうFlashのバージョンが古いとかかな…? CS3でimportのあるなしの両方のコードで試して、 importが必要なのと、importができてるのを確認したんだけど
>>42 えー!!
たしかこれ使えるのMX2004あたりだったような気がする…
loader.load()のタイミングとEvent.COMPLETEのタイミングが異なるから 出来る気がしないのですが jpgとかのパスを受け取ってそれを読み込んだDisplayObjectを返すような関数ってかけたりしますか?
>>44 読み込むjpgごとに新しくローダーを宣言すれば
それぞれのcompleteのタイミングで別々に処理ができる
>>43 時代に取り残されたMX難民は地道に調べてみる事にします
CS4欲しいお
>>45 それってモジュール性悪くないですか
今のところ妥協してこんなことしてますが
internal function sload(parent:Sprite,str:String):void {
var l:Loader = new Loader();
var ur:URLRequest = new URLRequest(str);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, handler);
l.load(ur);
function handler(e:Event):void {
parent.addChild(l.content);
l.contentLoaderInfo.removeEventListener(Event.COMPLETE, arguments.callee);
}
}
こんなインタフェースにしたい
function str2do(str:String):DisplayObject{/* ごにょり */}
win32apiのpostmessageに対するsendmessageみたいに
同期するリスナが欲しいです
48 :
hy :2010/11/01(月) 00:54:30 ID:Ageg0821
>>35 解決しました。
hasEventListenerの方法も調べてやってみます。
49 :
Now_loading...774KB :2010/11/01(月) 22:04:57 ID:K2CC1NbN
AS3.0初心者です。 Flash起動時にサウンドをミュートで読み込み、ボタンを押すごとにミュート/再生が切り替わるフラッシュを作ろうとしております。 ボタンのムービークリップ1フレーム目に下のスクリプトを記述したのですが、サウンドが再生されるどころか、 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」というエラーが出てしまいます。 何がいけないのでしょうか……。 // ▼基本処理 buttonMode = true; nextFrame(); // ▼変数定義 var sndCh:SoundChannel; var sndTr:SoundTransform; sndCh.soundTransform = sndTr; // ▼サウンドオブジェクトの作成 var snd:Sound = new BGM01(); // ▼イベント処理 snd.play(0, 1000); sndTr.volume = 0; addEventListener(MouseEvent.CLICK, xPlayClick); // ▼イベントハンドラ定義 function xPlayClick(evt){ if (sndTr.volume == 0){ sndTr.volume = 1; } if (sndTr.volume == 1){ sndTr.volume = 0; } }
>>49 多分sndTrがNullのままなんじゃないの
>>49 sndCh.soundTransform = sndTr;
これでしょ。sndChがnewされてないから。
なるほど、ありがとうございます。 var sndCh:SoundChannel; var sndTr:SoundTransform; を var sndCh:SoundChannel = new SoundChannel(); var sndTr:SoundTransform = new SoundTransform(); に書き換えたのですが、今度はまったく音量のコントロールができません。 ボタンをクリックしても、平然と音楽が流れ続けてしまいます……。
snd.play()の返り値でSoundChannelのインスタンスが得られるから、それを変数に入れて そのプロパティのsoundTransformを操作するんだ アドビのオンラインリファレンスを読んだ方がいいよ、例も書いてあるし
54 :
Now_loading...774KB :2010/11/02(火) 01:05:39 ID:ap7EJxUC
FlashBuilder4が開発環境なんだけど、 Flashのデバッガいれてブラウザでデバッグ実行してみると 外部サイトのgifファイル読み込んでるコードでサンドボックス例外みたいのでて止まっちゃいます ググるとcrossdomain.xmlつくれってのばかり見つかるんだけど、 その画像ファイルは外部サイトので、自分とこのサーバじゃないから crossdomain.xmlは関係ないです 大体この例外でて動かないのは自分の環境だけです なのでローカル環境の問題のはず 他の人はMacだったり、いろいろ環境違って何がダメなのかがわかんない Windows XP FlashPlayerは最新 ブラウザはFirefox。Safariでも同じ例外でた。 ChromeはFlash内蔵だからやり方わかんない (about:pluginsでデフォルトのFlashPlayer無効にしてみたけど インストール汁ってでるだけで、できなかった) あとFlashのアンインストーラで消して入れ直してみてそれぞれ試したけどダメ なんかアドバイスください
外部サイトの画像だからアクセス違反になってんじゃないの?
だれがやってもこのエラーならそれで納得なんだけど 自分の環境でしか発生しないっていう
>>56 デバッグ版のフラッシュプレーヤー入れてるのがあなただけとかいうオチじゃないよね
CS5+Flashdevelopでゲームを作ってるんですが、 キーボード入力のキーリピートで困っています stage.addEventListener(KeyboardEvent.KEY_DOWN,setKeyUp); function setKeyUp(event:KeyboardEvent){ trace(event.keyCode); } たとえば上記のようなキーを離したときキーコードを出力するコードを実行し、 スペースキーを”押しっぱなし”にすると出力は以下のようになります 229 229 229 229 229 229 これはOSのキーリピート機能によって勝手にキー入力が連打されてしまっているようなのですが これをみなさんはどのように回避されているのでしょうか
>>58 KEY_DOWN → フラグ立てる
フラグでなんか動かす
KEY_UP → フラグ折る
>>59 僕が
>>57 に貼ってた検証用のコードが間違ってました
×stage.addEventListener(KeyboardEvent.KEY_DOWN,setKeyUp);
○stage.addEventListener(KeyboardEvent.KEY_UP,setKeyUp);
key_upはオートリピートの影響受けませんね
>>59 のやり方でいこうともいます
ありがとうございます
61 :
Now_loading...774KB :2010/11/02(火) 13:38:59 ID:Kk6HAKgQ
>>61 購入って事は出来合いのもの?
ソース弄れる環境にないとその辺変えられないけど
63 :
Now_loading...774KB :2010/11/02(火) 14:19:17 ID:Kk6HAKgQ
>>63 ttp://ss-o.net/popup.html この通りにやれば出来るかも
これはswfObjectでflashのタグを書き出してるけど
if (window.navigator && navigator.userAgent & navigator.userAgent.indexOf("Gecko/") != -1) window.isGecko = true;
if (window.isGecko || window.ActiveXObject) so.addVariable('external', 'true');
要はここでブラウザ判別をして、条件に当てはまったらflashVarsで'external=true'をflash側に渡して、
flash側は
if (!param.external) {
navigateToURL(new URLRequest(url),"_blank");
} else {
ExternalInterface.call('function(url){window.open(url,"_blank");}',url);
}
navigateToURLでポップアップを開くか、window.openででポップアップを開くかの処理をすればいい
test
sparkで開発中ですがcssでglobalでフォントをゴシックにしています。 ですが、Labelは明朝のままです。ゴシックにしたいのですが、一つ一つ指定するしかないのでしょうか?
public class LoadXML{ private var xml:XML; private var url:String; public function LoadXML(u:String){ url = u; } public function getXML(url:String) { var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(url); loader.addEventListener(Event.COMPLETE, function(e:Event):void { xml = new XML(loader.data); trace(xml); }); loader.load(request); } public function returnXML():XML { trace(xml); return xml; } } こんな感じでXMLをロードしています。 Event.COMPLETEのtraceは出力されますが、returnXMLのtraceはnullで、戻り値もnullです。 なぜですか?
68 :
Now_loading...774KB :2010/11/04(木) 13:15:20 ID:XgiK45V4
下記の2種類の方法で、再生中のメモリの使用量は大きく変わってきますか? A ------------------------------------------------------------------- ムービークリップ:a フレーム1:[画像a-1] / フレーム2:[画像a-2] / フレーム3:[画像b-1] / フレーム4:[画像b-2] / フレーム5:[画像b-3] … フレーム999:[画像z-3] ムービークリップaを配置して、duplicateMovieClipで複数複製して 複製したムービークリップをgotoAndStopで指定のフレームに移動 B ------------------------------------------------------------------- ムービークリップ:a フレーム1:[画像a-1] / フレーム2:[画像a-2] ムービークリップ:b フレーム1:[画像b-1] / フレーム2:[画像b-2] / フレーム3:[画像b-3] : ムービークリップ:z フレーム1:[画像z-1] / フレーム2:[画像z-2] / フレーム3:[画像z-3] ムービークリップa〜zにリンケージ識別子を指定。 attachMovieで複数複製して複製したムービークリップをgotoAndStopで 指定のフレームに移動 --------------------------------------------------------------------- また、再生中のメモリの使用量がわかる方法があれば合わせて教えてください。 環境:Windows XP/Flash 8
って
>>68 はFlash8だからAS2.0か
・・・タスクマネージャでプロセス見るとか?
71 :
Now_loading...774KB :2010/11/04(木) 17:46:29 ID:3S/8zkeg
73 :
72 :2010/11/04(木) 20:27:44 ID:JHwyfqpq
.asファイルでクラスを作ってそれでURLを呼び出ししていて、そのロードが完了したことを mxmlファイルに伝えたい場合どんな方法はあるでしょうか?
>>73 mxml側のリスナー関数をasのクラスにEvent.COMPLETEでaddEventListenerするとかかな
as側とmxml側がどう関係してるか分からんから何とも言えないけど
>>71 DisplacementMapFilter 台形
で検索するとサンプル見つかると思います
76 :
72 :2010/11/06(土) 15:52:54 ID:8Uz9tWj0
flexのlistのスクロールバーの位置と要素の高さを指定したいのですが、どんな感じでやるのでしょうか?
TextFormatのfontのデフォルト値をflash.text.TextFormatにさかのぼって設定するにはどうしたらいいですか?
TextFormatをextendsしたMyTextFormatでも作ったらいいんじゃね?
>>78 ありがとうございます。
継承ではなく、元から対応したいのですが、できませんか?
それは完全に元の物を置き換えてしまいたいって事言ってるの? flash.text.TextFormat自体を書き換えたいってこと?
先に行っておくけど、それは出来ないし、 何のためにそれが必要なのかもわからない。
82 :
sage :2010/11/07(日) 20:23:24 ID:3fKbKi5b
Flash8を使ってフルフラッシュでコンテンツを作っておりまして、 TOPページからそれぞれloadMovieを使って、 swfファイルを指定した部分に読み込むようにしてあります。 シンボルをドラッグ&ドロップして、 正解するとムービーが流れるというクイズを作ったのですが、 TOPから読み込んだ場合のみ、正常に動作しません。 ドラッグ&ドロップはできるのですが、 正解不正解が判定されません。 TOPから読み込まずswfで確認した場合は正常に動作します。 階層の指定が間違っているのでしょうか? 初歩的ですいませんがご教授お願いします。
流石にもう少し情報が無いと答えようがないと思う 例えばどうやって正解・不正解を判定しているかとか
flash builderでandroidのairアプリをつくっています。 パッケージ化をGUIからではなく、コマンドラインからおこないたいと思います。 adt -package -target apk-emulator -storetype pkcs12 -keystore Android_Cert.p12 App-Emulator.apk App-app.xml App.swf これでエミュレーター向けのパッケージができるようなのですが、これはsrcで実行すればいいのでしょうか? また、これでいうApp.swfがないのですが大丈夫でしょうか?
>>83 そうですね、すいません><
kai1というムービークリップをtai1に重ねると正解の
ムービーが流れるようになっており、
kai1に記述しているActionScriptが以下のようになっています。
on(press){
this.startDrag();
myX =this.x;
myY =this.y;
}
on(release, releaseOutside){
this.stopDrag();
if(_droptarget == "/tai1"){
_x =this.tai1._x;
_y =this.tai1._y;
_parent.myCS.start();
_parent.gotoAndPlay(2);
trace(_droptarget);
}else if(_droptarget != "/tai1"){ //間違った場合↓↓
_x=myX; //元の場所に戻す
_y=myY;
_parent.myWS.start();
}
}
宜しくお願いしますm(_ _)m
85です。 ASの日本語の部分は気にしないでください。
>>85 正解不正解が判定されないってのがどういう状態になってるのか分からないけど
「_dropTarget」がちゃんと機能してるか確かめてみたら?
あととりあえずelse if(_droptarget != "/tai1")はただのelseでいいと思うけど
>>85 3行目4行目x,yになってるけどそれは?
ところでマルチポストという言葉をググッといてくれ
>>87 ありがとうございますm(_ _)m
TOPから読み込まなければ正常に正誤判定されるので、
_dropTargetは機能していると思うのですが..orz
elseのご指摘もありがとうございます!!
>>88 3・4行目は記述が間違っていました;
myX = _x;
myY = _y;
ありがとうございます。 3・4行目は記述が間違っていました;実際には myX = _x; myY = _y; と書いて、シンボルのスタート位置を記憶しており、 間違えた場合は元の位置に戻るようにしています。 初心者版にも同じ質問しており申し訳ありません。。
>>91 droptargetはドロップ先MCの絶対ターゲットパスを格納するプロパティ
ということで
他のSWFに読み込まれた場合パスが変わってくる
/親MC上のMC/tai1 とでもすれば動くはず
これだと子swf単体じゃ動かなくなる
試してないけどlockrootは使えないのかな?
>>92 ありがとうございます!!
droptargetのことについて何も知りませんでした><
今、92さんがおっしゃった通りにやってみたところ
TOPページからは正誤判定することができました!
本当にありがとうございます!\(^o^)/
おっしゃる通り子が単体で動かなくなってしまったので、
lockrootについても今から調べてみますね。
初心者の私に丁寧に教えてくださり、
本当にありがとうございましたm(_ _)m
>>93 ふと思ったが単体でも動かしたいなら
この場合規定値に合致するかどうかだから
||(或いは)を使って
if(_droptarget == "/tai1"||_droptarget == "/親MCの絶対パス/tai1"){}else{}
みたいので充分かな
>>93 _droptargetの補足です
教えるほうも勉強不足だったので一応w
>>94 でも間違いではないけれど
通常はeval()を使ってインスタンスの参照に変換するようです
if (eval(this._droptarget) == _parent.tai1) { 〜
trace(eval(this._droptarget)+"と"+_parent.tai1)
これならパスの変化に影響を受けません
教えてくださーい 0.18932072みたいな小数点の長い数値を第2位で繰り上げて0.2みたいに算出するには どうしたらいいんでしょうか?
Math.round(小数値 * 100) / 100
あ、繰り上げだった。roundじゃなくてceilだ。
あざーす! 感謝です
環境:FlashCS4をWinXP-Proで使用(AS3) 1回キーボードを押したら1度WAVファイルを再生したいのですが 障害者が使用するためボタンを離すことができません。 そのため、何度もWAVファイルが再生されてしまいます。 どのように改善すればよろしいでしょうか? stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKey); var haiObject : Sound = new hai(); if ( event.keyCode==71 ) { haiObject.play(0, 0, null); }
ifの中でremoveEventListenerすればいいんじゃないか? その後どっかでaddEventListenerしなきゃ次に押しても反応しないけど
>>101 ご返答ありがとうございます。
以下のようにしたら、繰り返し音が鳴らなくなりましたが
二度と音が鳴らなくなりました
まずは一歩進みました
addEventListenerをどこでどのように入れたらよいか検討してみたいと思います。
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKey);
var haiObject : Sound = new hai();
if ( event.keyCode==71 ) {
haiObject.play(0, 0, null);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, checkKey);
}
>>102 keydownでリムーブしたらkeyupでaddすればいいんじゃない?
SOUND COMPLETEイベントで制御でよくない?
105 :
100 :2010/11/10(水) 06:17:47 ID:yHKpzLPR
>>103 ,104
ご返答ありがとございました。
103様の方法をググってできました。
これで、明日、正確には今日ですが
患者さんに使ってもらいたいと思います。
104様の方法では音が鳴りやんだら、また、再生されてしまうようでして
勉強してみます。
とりあえず、寝ます。
ありがとうございました。
>>105 なんで、音ならすんだよw
>>104 の方法で制御するのは、ボタンだろ。
音を鳴らしたら、イベントをリムーブして、
コンプリートでもう一度イベント設定ってことだろ。
>>106 試してないから分からないけど、キーリピートが効いてるとしたら
コンプリートの瞬間にイベント追加した場合キーが押されてる判定になってすぐ再生始まっちゃうんじゃ無いの?
本来の動き的にもキーが離された瞬間にイベント追加する方が正しい気がする
プリミティブ型の変数をメソッドの引数として参照渡しする方法はありますか?
無いよ。だってプリミティブだもの。
>>107 すまん。書き方が悪かったのか、
>>104 書くだけでわかってくれると思ってた。
で、キーリピートの話って出てきてないんだが、それは一体どこから?
111 :
Now_loading...774KB :2010/11/12(金) 02:04:38 ID:8ileN5w7
ステージにシンボル置いてそれを動かすのと、リンケージからシンボルを書きだしてaddChildして動かすのとCPU的にはどっちがいいんでしょう。
CPUにはそれ程かわらんとおもうけど、 メモリ的にはリンケージが有利だったとおもう。 なんかで読んだ。
113 :
Now_loading...774KB :2010/11/13(土) 16:47:21 ID:6F1Nb2et
114 :
Now_loading...774KB :2010/11/15(月) 02:41:59 ID:KVsUyB7V
テキストフィールドのautoSizeについてです。 テキストフィールドの枠のサイズを固定しながら 右寄せにする方法はあるでしょうか? 具体的にいうと今のところ、 枠のサイズを固定には「テキストフィールド.autoSize = TextFieldAutoSize.NONE」、 右寄せにするには「テキストフィールド.autoSize = TextFieldAutoSize.LEFT」 にするやり方しか知らないので、 両方同時にするにはどうするのかが判りません。 どなたか、ご存知の方はいらっしゃいますか?
>>114 TextFormatのalignってプロパティで段落の整列の設定ができて、TextFormatAlign.RIGHTにすると右寄せの設定
それを設定したTextFormatのインスタンスをsetTextField()とかで適用してやればいいんじゃなかったかな
116 :
Now_loading...774KB :2010/11/15(月) 03:53:46 ID:3W26PjJo
117 :
114 :2010/11/15(月) 11:31:04 ID:KVsUyB7V
>>115 あ、なるほど。できました!
ありがとうございます。
118 :
Now_loading...774KB :2010/11/15(月) 13:44:50 ID:+JYCC0qy
FlexBuilder3でAir2.5に対応したアプリケーションを開発することは可能ですか? SDKをダウンロードして組み込んであげればよいのでしょうか?
今までas2を使っていて最近as3を使い始めました。 現在、下記の現象に悩まされています。 (1)外部のswfをURLRequestで読み込み、addChildで表示 (2)LocalConnectionで、外部のswfと通信 (3)LocalConnectionオブジェクトをcloseで停止 (4)外部のswfをremoveChildで削除 (1)〜(4)まで動かした後、再び(1)に戻ろうとすると(2)で 「このオブジェクトは既に接続されているため、接続できません」と エラーが出ます。それと、(4)の削除された後も外部のswfの イベントが動いています(外部のswfのtraceが削除後も表示されている) そこで、質問ですが、 ・読み込んだ外部のswfを完全に削除(停止?)する方法は? ・LocalConnectionオブジェクトをcloseで停止していますが、 上記エラーが出ないように切断する方法は? よろしくおねがいします。
121 :
119 :2010/11/17(水) 10:32:56 ID:2Cx8hwzq
LocalConnectionエラーはConnection名を毎回変える事により、 エラーが出なくなりました。 しかし、(4)の削除された後も外部のswfのイベントがまだ 動いています。(1)〜(4)をループさせると、見た目では 消えていますが、裏で複数のswfが動いているように感じます。 読み込んだ外部のswfを完全に削除(停止?)する方法は無いのでしょうか?
122 :
120 :2010/11/17(水) 11:11:11 ID:UJ50A5yM
>>121 LocalConnectionで繋いだ先の、
削除したいイベントを削除するファンクション準備すれば良くないか?
切断する前にそれを呼び出したらいいだけかと。
124 :
Now_loading...774KB :2010/11/17(水) 15:47:59 ID:kPxOgEgg
直接AS3に関係する事なのかわからないのですが、質問です。
現在
ttp://poisoncode.blog77.fc2.com/blog-entry-28.html のページを見ながらテトリスを作っているのですが、ソースの途中にある
if (fieldMap[my][mx] && fieldMap[my][mx] != currentIndex + 1) return true;
else return false;
の条件の部分がいまひとつ理解できません。
fieldMap[my][mx]かつfieldMap[my][mx]が currentIndex + 1でない時という意味ですよね?
その前半のfieldMap[my][mx]かつというのがわかりません。
fieldMap[my][mx]が真の時という事なのでしょうか?
fieldMap[my][mx]が真と判断される時ってことだけど、 真になる値ってのが、trueだったり文字だったり、0以外の数字だったり。 詳しいことはググるが吉
126 :
Now_loading...774KB :2010/11/17(水) 22:53:17 ID:kPxOgEgg
>>125 ありがとうございます。
真になるってのはわかったのですが、この場合はfieldMap[my][mx]に値があるかどうかだけを見ているのですか?
ググったのですが演算子を使ってない条件式を見つけられなかったので・・・
127 :
Now_loading...774KB :2010/11/18(木) 15:47:59 ID:DyTqu2Co
質問です。 AS3.0で、ボタンにキーボードのイベントを割り当てているのですが、 画面を一度クリックしないと、キーボードが反応しません。どういう現象ですか? ソース stage.addEventListener(KeyboardEvent.KEY_DOWN,onKEY); function onKEY(e:KeyboardEvent):void { if(e.keyCode==Keyboard.UP){ gotoAndStop(1); } }
有名な現象。ググれ。 JavaScriptで回避できる。
129 :
Now_loading...774KB :2010/11/18(木) 17:59:57 ID:n4pc+wIN
すみません、超初心者に教えていただけますでしょうか。(cs4 as3.0です。) 2つのjpegをMovieClipとして表示したいのですが最後の(2回目に読み込んだ)画像しか表示されません。 for文の2を1すると1回目の画像が表示されます。 両方の画像を表示させるにはどこを修正したらよいのでしょうか。 よろしくお願いします。
130 :
Now_loading...774KB :2010/11/18(木) 18:00:21 ID:n4pc+wIN
package { import flash.display.*; import flash.net.*; import flash.utils.getDefinitionByName; public class MyMovie extends MovieClip { public function MyMovie() { var imgArray:Array=new Array(0,1); var loadUrl:String=new String ; var img : Loader = new Loader(); var xi:int=0; var yi:int=0; var myClass:Class; for (var i : int = 0; i <2; i++) { var classMc:String="imgCat"+i; var myClass:Class=Class(getDefinitionByName(classMc)); loadUrl="img"+imgArray[i]+".jpg"; var urImage:URLRequest=new URLRequest(loadUrl); img.load(urImage); var myInstance:MovieClip = new myClass(); myInstance.x=xi; myInstance.y=yi; myInstance.width=40; myInstance.height=20; myInstance.addChild(img); addChild(myInstance); xi=xi+250; yi=yi+250; } } } }
同じLoader使い回してるからじゃね?
132 :
Now_loading...774KB :2010/11/18(木) 18:50:12 ID:9CBn527q
FlexBuilder3でAir2.5に対応したアプリケーションを開発することは可能ですか? SDKをダウンロードして組み込んであげればよいのでしょうか?
AIR2.0はできたから、やってみたら? FlashBuilderにしちゃったから、おれは試せない。
>>131 ありがとうございます。
Loader初期化したらできました。
135 :
132 :2010/11/18(木) 20:05:39 ID:9CBn527q
>>133 ありがとうございます。
もすこし質問させてください。
AIR2.0はできたとの事ですが、
FlexBuilder3にFlexSDK4を入れたとの解釈で宜しいでしょうか?
同じActionScript3なのに、FlexSDK3とFlexSDK4で
クラスライブラリが異なるのに戸惑っています。
Javaのバージョンがあがっていくのとは
また違う感じなんでしょうか。
>>13 FlexSDK4を入れたと思うんだよね。なんか自信がなくなってきた。
デザインビューでうまくデザインできないとか言う問題があっただけで、
クラスライブラリが異なるってところがわからない。
もしかしてSparkコンポーネントのことを言ってるのかな?
137 :
135 :2010/11/18(木) 20:39:24 ID:9CBn527q
>>136 ありがとうございます。
なるほど。デザインビューで少し不具合があるんですね。
ひとまずFlexSDK4を入れてみようと思います。
クラスライブラリに関しては、
例えばNativeProcessクラスなんですが、
FlexSDK4にはありますが、FlexSDK3にはないようです。
これが仰られているSparkコンポーネントになるのでしょうか?
>>137 アンカー間違えてたゴメン。
>NativeProcess
これもウリのひとつだし、
SDKのバージョンが上がって機能が追加されたことに何か驚くことがある?
Javaだって、Genericやら拡張for文やら書き方が変わるような変更があったし、
nioやらLoggingやらのAPIの追加もあったし(例が古いけどね)
Sparkは昔のmxコンポーネントにあたるもの。
スキンを導入して、外観を簡単に変更できるようになった。
139 :
137 :2010/11/19(金) 10:26:11 ID:2VMyhqCU
>>138 ありがとうございます。
少し変な固定観念に縛られていたみたいです。
SDKのバージョンがあがることで
ライブラリが増えていくことはしっくりきたのですが、
FlexSDK3でも4でも
ActionScriptは3のままだったので
「ActionScriptのバージョンが上がってないのに
なんでライブラリが増えてるんだろう」
と、悶々としておりました。
Javaであれば
SDKのバージョンが上がると、Java5とかJava6とか、言語のバージョン(?)も
上がってるんだなって分かりやすかったものですから・・・。
ActionScript3といのは言語仕様のバージョンで
FlexSDKはライブラリ群のバージョンになっていて
それぞれ別物という風に理解しておけばよいのかなと
今は思っています。
間違っていたらご指摘頂けるとうれしいです。
FlexSDKってのはActionScript3とは別物っていう認識で良いと思う。 FlashCSの方に入ってるクラスでFlashCSでしか使えないものがあるし、 FlashBuilderでしか使えないクラスがあるしね。(両方持ってれば使えるけど。)
141 :
139 :2010/11/19(金) 17:33:55 ID:2VMyhqCU
>>140 > FlashCSの方に入ってるクラスでFlashCSでしか使えないものがあるし、
> FlashBuilderでしか使えないクラスがあるしね。(両方持ってれば使えるけど。)
初耳です!びっくりしました!
そんな違いまであるんですね!
うーむ。奥が深いですね。。。
そういう情報はどこかにまとめられていたりするのでしょうか?
CSではイージングが標準で準備されているのに、 Flexだと入ってないとかあるよ。 Flash-jpとかFlexUGとかのぞいてたらわかるかもねぇ。
AS3でprintAsBitmap = trueで印刷をする場合、dpiの変更といったことは出来ないんでしょうか。 印刷対象のサイズは3000x4000くらいはあるんですが、そのまま印刷しようとすると盛大にはみ出し、 紙のサイズに合わせようとするとサイズを縮小しなければならないため、かなり荒く印刷されてしまいます。
>>143 ベクター形式以外のデータとかアルファが必要ならビットマップデータで印刷するしかないので
DPIの変更はできなかったと思う
Flashから直接印刷しなくてもいいなら、bitmapDataを一旦外部プログラムに渡して
PNGなりJPGなりに変換してダウンロード>パソコンの標準機能で印刷
で高画質で印刷できる
145 :
141 :2010/11/20(土) 14:51:48 ID:1n8jdNLc
>>142 ありががとうございます。
こまめに情報を拾っていくようにしていきます!
Flexについての質問...をしようと思っていましたが、書きながら自己解決できたので、誰かのためにメモ。 RichEditableTextをスクロールさせたい場合は、 <s:Scroller > <s:RichEditableText /> </s:Scroller> のようにして使います。 初歩的かつスレ汚しですみません。
>>146 それね、Sparkコンポーネントからなんだよね。
FlashBuilder4になってからってこと。
namespaceがsではじまる物=スパークコンポーネント(この場合、<s:RichEditableText>)
でスクロールさせたい物には、全てScrollerが必要になった。
これのおかげで、勝手にスクロールバーが出て面倒とかいうことが無くなったけど、
Flex3でCanvaまかせだったりすると、わからなくて苦労したw
>>147 Sparkからなのは知りませんでした。どおりでググッても、
「自動でスクロールバーがでる」という情報ばっかりだったんですね・・・。
149 :
Now_loading...774KB :2010/11/21(日) 15:07:09 ID:MNMYcOt/
質問です。 As3で関数の引数にObjectのデフォルト値入れるとエラーでてしまうのですが、引数でObjectにデフォルト値ってセットできないのでしょうか? 下記ソースになります。 function hoge(obj:Object = {name:"hoge"}):void{ trace(obj[name]) }; よろしくお願いします。
152 :
Now_loading...774KB :2010/11/21(日) 17:11:28 ID:MNMYcOt/
>>150 下記で値は取れてるので、オブジェクトの書き方は問題ないと思います。
var obj:Object = {hoge:5};
trace(obj["hoge"])
>>151 エラーは、1047:パラメータ初期化子が不明か、コンパイル時定数ではありません
これって、引数ではnewできませんよってことなのでしょうか?
153 :
Now_loading...774KB :2010/11/21(日) 17:18:35 ID:MNMYcOt/
連投ですみません。 諦めて動けばいいよ思考になり、デフォルト値をnullにして中で処理することにしました。 function hoge(obj:Object = null):void{ if(obj == null) obj = {name:"hoge"} trace(obj["name"]) } ありがとうございました。
154 :
Now_loading...774KB :2010/11/22(月) 03:37:52 ID:TT7WypJE
質問です 自分は普段AS3でデータ型を省略してるのですが(データの入れ間違えなんてしませんし誰にも見せないので) 各所覗いてると省略してるのは自分だけのような気がして不安になってきました。 AS3でデータ型を書かないとパフォーマンスが落ちるといったことでもあるのでしょうか? 逆にその分スクリプトの容量が1割減るのでパフォーマンスが上がるようなことはないですか?
型指定することでバイトコードが最適化されてパフォーマンスが上がる と言われています。変わんねーよって人もいます。 詳しくはググった方がいい・・・。 あと、書いてるときは間違えない自信があったとしても、 あとで弄るときは間違えるかもしれませんよ。 せっかくコンパイラーがチェックしてくれると言ってるんだから、させてあげればいいと俺は思う。
いや、パフォーマンスは確実に変わる。遅くなる。
とは言っても、ループを大量に回すとかやった場合ではあるが。
さらに、スクリプトってコンパイルされるのだから、
元のテキストが短くなっても、実際のバイトコードが
短くなるかどうかはわからないし、
バイトコードが短いから速いとも限らない。
ループ3行と、10行のプログラム、どっちが速いとかわからんでしょ?
FlashBuilder等のIDEを使って書けば、代入できる候補のリストとかを絞り込んでくれるし、
>>155 が書いているようにコードミスが確実に減るし。
デメリットが無くて、メリットばかりなんだから
使わない手は無いと思うんだけどな。
157 :
Now_loading...774KB :2010/11/22(月) 17:49:17 ID:w7kM+4hd
FlashCS4(AS3,Player10)をWinXP-Proで使用 特にAS3やPlayer10に限った事では無いのですが、マウスのstartDrag()によるインスタンス(MC) の移動による描画が時々MCと一致せず困っています。 今やっているのは、ある点AからRだけ離れた所にMC(B)を置いて、Bをドラッグして水平移動し、 その時々のA→B間距離を半径rとした円環(円周)を描くというものです。 (つまり、マウス操作により円環が大きくなったり小さくなったりする) AAで書くと下の感じです。 |円周 | A・ -- R -- [B] ↑ (矢印記号はマウスポインタ) | |円周 通常は円周描画の拡大縮小がBの動きに追従しているのですが、一旦マウスがBの領域から外れ、 再ドラッグすると円周の半径方向位置とBの位置が一致せずズレた状態が続きます(下記) |円周 | A・ -------- r -------- [B] ↑ | |円周 希望を平たく書くと、『描画を正気の状態に戻す』ということです。試しにフレームレートを増やしたり、 updateAfterEvent()を使いましたが駄目でした。 何かアドバイス頂けたら幸いです。
>>158 レスさんきゅう。
円周描画にはご指摘の通りAB間距離を使っています。
原因が分かりました。
MC[B]に対して、マウス押す/放す(MouseEvent.MOUSE_DOWN/UP)の信号をDispatchEventで
描画関数に伝えていますが、MOUSE_DOWN/UPの識別を横着こいてフラグ管理していたのが原因
でした。
厳密にMOUSE_DOWNとUPを別々のDispatchEventで送受信したところ、円周描画がスムーズに
追従するようになりました。
AS3のTimerについての質問をさせてください。 以下のようにある関数を通して、タイマーを順次呼び出すにはどのように実装すればよいのでしょうか? 半日悩んだのですがうまくいきません。どうか助けてください。 [内容] var myArray:Array=[]; myArray.push(['log1',1000]);//traceしたい内容,traceの遅延ミリ秒を設定します。 myArray.push(['log2',2000]); myArray.push(['log3',3000]); myTraceFunction(myArray); [望む結果] 関数呼び出し→(1000ミリ秒経過)→trace('log1')→(2000ミリ秒経過)→trace('log2')→...
>>160 各配列の要素は必ず[文字,数値]としたいの?
もし文字だけ出力するならこれで行けると思うけど
timer_count:int = 0;
timer:Timer = new Timer(1000, 0);
timer.addEventListener(TimerEvent.TIMER, timer_func);
function timer_func(evt:TimerEvent){
timer_count++;
for(var i:int=0; i<myArray.length; i++){
if(timer_count == 1000*(i+1)){
trace(myArray[i]);
}
}
}
要素を文字、数値という順番が決まってるなら
trace(myArray[i]);のところはi*2で偶数にして
1000*(i+1)のところはmyArray[i*2+1]*(i+1)で奇数にすればいいんじゃない?
こちらの例えが悪く申し訳ないです。 myArray.push(['hoge',60]); myArray.push(['foo',200]); myArray.push(['bar',30]); このように数字に規則性はないつもりでした。 また、配列の中身は[String,uint]で固定です。 この設定でもう一度考えていただけますか? どうぞよろしくお願いします。
test
function myTraceFunction(str:String, arr:Array):void{ trace(str); if(arr && arr[0]){ settimeout(myTraceFunction, arr[0][1], arr[0][0], arr); // 設定時間後に再起呼び出し arr.splice(0); // arrから最初のデータを削除 } } こんな感じでどうだろ? 全く動作確認とかしてないし、引数の順番とかspliceの動作とかうろ覚えだけど。 そこらへんはリファレンス見ながら頼む。 spliceはsettimeoutの前にしないとだめとかいう可能性も。
>>160 ならばこれでいけるよ
var myArray:Array = new Array();
var timer_count:int=0;
var timer:Timer = new Timer(100,0);
timer.addEventListener(TimerEvent.TIMER, timer_func);
myArray.push(['hoge',60]);
myArray.push(['foo',200]);
myArray.push(['bar',30]);
timer.start();
function timer_func(evt:TimerEvent){
timer_count++;
trace(timer_count);
for(var i:int=0; i<myArray.length; i++){
if(timer_count==myArray[i][1]){
trace(myArray[i][0]);
}
}
}
できました!検証に時間がかかり、お待たせしました。
>>165 さんのコードですが、
hoge->foo->bar->を希望していましたが、bar→hoge→fooの順番で呼び出されてしまい、
>>164 さんのコードは
関数呼び出し→(1000ミリ秒経過)→trace('log1')→...が
関数呼び出し→trace('log1')→(1000ミリ秒経過)→...になってしまいました。
そこで双方のコードを参考にしつつ四苦八苦したところ以下の実装で動作しました。
function myTraceFunction(arr:Array,traceFlag:Boolean=false):void{
if(traceFlag){//遅延してからtraceするために初回は飛ばす
if(arr && arr[0]){
trace(arr[0][0]);
if(arr[1]){//次の配列があれば再帰呼び出し設定
setTimeout(myTraceFunction, arr[1][1],arr,true);
}
arr.shift();//arrから最初のデータを削除
}
}else{
setTimeout(myTraceFunction, arr[0][1],arr,true);//初回は遅延のみ
}
}
こちらの説明不足で意図がうまく伝わらず失礼しました。
どちらのコードも大変参考になりました。本当にどうもありがとうございました!
なんか書いて損した気分...
>>167 誤解させてしまってすみませんでした。これからは気をつけます。
ステージの高さと幅を動的に変えることって可能ですか? ウェブサイト内のフラッシュでも、フラッシュプレイヤーで再生するフラッシュでもいいです。
>>169 前にも似たような質問があったけど、その時は
「FLASHそのものからは動的に変えられないから、Java Scriptで表示領域を変化させる」
という解決法だった気がする。
プロジェクタでいいならdirectorにswf読み込むだけで windowの移動拡大縮小が可能になるよ(buddy api使用)
ASってタイムラインとかルートとかからんでくるとややこしいのですが ASの面倒くささを軽減するライブラリ集とかないですか?
>>172 as3 frameworkとかフレームワークで検索しよう
FlexSDKでActionScriptプロジェクトで作ってれば、 ややこしい事できないけどな。
ASってファイル操作ができないみたいですが JAVAやJAVAScriptを呼び出してファイル操作やファイル実行することって可能ですか?
捕捉です。やりたいことはローカルからスタンドアロンアプリとしてswfを起動させて ローカルHDD内のフォルダ内のファイル一覧を読み込んだり、ファイルを保存したりしたいです。 airは使いたくないのでflash単体でできませんか?
まずAIRを使いたくない理由を述べなさいよ
作りたいのはインターネットで配布してローカルPCで実行するアプリなんですが airだと確か規約でネット配布のソフトにairラインタイムのインストーラーを同梱できなかったと思います。 そうするとユーザーから見るとインストールとか面倒かなと。
あれ、そうなんですか?ゆとりなので規約をよく理解できませんでした。 AIRは不人気なので敬遠してたのもあるのですが、試しに導入してみたら悪くなかったので、 とりあえずこれで作ってみたいと思います。
AIRが不人気というが、この手の奴で流行っている他の奴を知りたい。 みんな似たようなもんだとおもうが。
182 :
Now_loading...774KB :2010/11/26(金) 18:58:17 ID:/RlzuLln
FlashCS4,ActionScript 3.0,WinXP curveToで描いた曲線の頂点の位置AとコントロールポイントBの位置関係(ABの関係)を 把握するにはどうしたら良いでしょうか? 例えば「へ」の字型線の頂点にAがあり、その上にBがあるとき、 ○ B . A(本当は線の中にある) へ Aの位置よりBの位置を求めたく思います。 ※目標は曲線グラフを描くことです。 「ActionScript 3.0 curveto 頂点 位置」でググりましたが分かりませんでした。
スプライン曲線じゃいかんの? ライン上の点を結ぶ曲線になるから、グラフ描くなら制御しやすいとおもうが。
次のイベント・ハンドラーを実行してみたところ、「処理が遅くなっている」という旨の 警告が出ました。 onMouseUp = function (){ ; trace(++i); ; while (true); } このことから、割り込み処理は素早く済まさなければならないことは分かったのですが、 割り込み処理を早急に終了して、その後で何か希望する処理を実行させる方法は有るので しょうか? gotoAndPlay() を試してみましたが、割り込み処理を終了するわけではないようです。
textAreaのコンポーネントをクリックしたときにフォーカスの枠を非表示に するにはどうすればいいですか?mytxtarea.focusEnabled=falseにしても無理でした。 AS3.0です。
187 :
184 :2010/11/27(土) 00:21:10 ID:VNX11zp6
>>185 本当に物凄い勢いと言うか物凄い早さでの回答ありがとうございます。
紹介してもらった記事は、これから読んで勉強します。
188 :
182 :2010/11/27(土) 00:27:06 ID:hSM08HHK
>>183 さんくす。
スプライン曲線でググって幾つかサンプルが見つかりました。
試してみます。
189 :
184 :2010/11/27(土) 12:25:56 ID:imszsrAY
>>184 のイベント・ハンドラの件の続きです。
イベント・ハンドラ内の処理を短時間で終わらせるために、次のように変更して
みました。
flag = false;
onMouseUp = function (){
trace("mouse up");
flag = true;
}
そして時間の掛かる処理 while (true); は、別のフレームに持って行きました。
if (flag){
trace(++i);
flag = false;
while (true);
}
gotoAndPlay("loop_start");
これで、イベント・ハンドラ実行中に次のイベントが発生する危険性は充分小さく
することが出来たはずですが、それでも前回と同じく「処理が遅い」という警告が
出ます。
さらに、イベント・ハンドラ内の trace() の反映が、異常終了時まで待たされます。
何故なのでしょうか? 遅くともイベント・ハンドラ終了時には trace() は完了
していそうなものですが。
どうも「while (true);」が悪さをしているようですが、納得出来ません。
>>189 AS2.0?
とりあえず、while (flag)じゃないの?
やりたいことよくわからんけど、onEnterFrameとか使うとこなんじゃないの?
ループ処理終わるまでは、他の処理入らないと思う
while(true)じゃ無限ループだよね
192 :
Now_loading...774KB :2010/11/27(土) 15:14:48 ID:JVzaWPA9
色が段階的に変化している正方形をMCの中に並べています。 下のようにしたところ、黒から青に段階的に変わった後少し青みがある黒になってしまいます その理由はわかるのですが、 虹のようなグラデーションに変化させるにはどうすればよいでしょうか? for(var i=0; i<100; i++) { var box=new MovieClip(); box.graphics.lineStyle(1,0x0000FF); var color = 0x000000+0x000010*i; box.graphics.beginFill(color); box.graphics.drawRect(0,0,80,80); box.x=10+90*i; stage.addChild(box); }
193 :
Now_loading...774KB :2010/11/27(土) 15:16:23 ID:WSq+tlM8
Flash10 AS3です
194 :
184 :2010/11/27(土) 17:08:53 ID:imszsrAY
>>190 >AS2.0?
残念、AS1です。某フリーソフトを使っています。そういう問題でしょうか。
なお、念の為言っておきますが、while (true); を実際のアプリケーションで使おう
としている訳ではありません。これは、時間の掛かる処理として模擬的に書いただけ
です。
>ループ処理終わるまでは、他の処理入らないと思う
イベント割り込みの入るタイミングは、どうなっているのでしょうかね?
どこかにドキュメントなど無いでしょうか? オライリー本をパラパラと眺めてみま
したが、使い方しか書いていませんでした。
>>194 無料ならFlex使ったら?
Flash Playerはシングルスレッドで動作するから、割り込みという考え方が違うのでは?
何をやりたいかをはっきりさせれば、Flashではどういう方法で実現できるか
わかると思うけど
ドキュメントならLiveDocs見るのがはやいんじゃない?
196 :
184 :2010/11/27(土) 18:26:16 ID:imszsrAY
>>195 Flex という名前は時々目にしましたが、フリーだとは知りませんでした。
検討してみます。
LiveDocs は Adobe のサイトのマニュアルですね? それなら、今も、このウィンドウ
の下に開いています。しかし、これも使い方しか書いていません(読み方が不充分なの
かも知れませんが)。
フラッシュの作品って、winでもmacでもlinuxでも1ドットの狂いもなく再現されるの?
>>197 実行プログラムであるFlashPlayerはOS毎に多少チューニングされるけど、共通して
コーディングの通りに動く。また、Winで生成したFlashPlayerもMacで動く。
これはHDDに例えるとモーターと記録部分みたいなもの。
つまり、バッファローのHDDと、IO-DATAのHDDのモーターは同一のものであっても、書き込み
や読み込みエラーはユニットの部品に依存する。
まあ、膨大な浮動小数点計算をバンバンやる描画なら狂うかも知れ無いが、今のところ
そんな場面には遭遇したことは無い。
試しに見てくれ→
http://beautifl.net/
200 :
Now_loading...774KB :2010/11/28(日) 12:46:06 ID:+8fgUxBB
Flash買ったからaction script3の習作って事でブロック崩し作ってるんだけど、 それぞれのクラスの連携どうしてる? ボールクラス駆動時に Ball.Update( Bar,Block ); みたいに、他のクラスの参照渡してるんだけど、少し気持ち悪いんだよなー おそらくセオリーに反してるよね あと、実行後にエラーが判る物が多すぎて面倒くさいねぇ Cみたいにコンパイルエラー吐いてくれない
コンパイラーでわかるエラーはコンパイルエラー吐いてくれます わからないものはどうしようもない そんなのどんな言語だって同じだと思うが
202 :
Now_loading...774KB :2010/11/28(日) 15:00:40 ID:+8fgUxBB
>>201 そうなんだけど、アクションスクリプトの方が動かさないと判らないエラーが多くない?
無い関数を呼ぶとか、無い変数を呼ぶとか、Cだったら動かす前にわかるけど、アクションスクリプトは動かしてからエラーが判明する
無い関数・変数とかならコンパイルエラーはいてくれるよ。 設定がまずいんじゃない? Flex Builder 3使用者より。
204 :
Now_loading...774KB :2010/11/28(日) 16:25:34 ID:+8fgUxBB
>>203 そうなんだ。
Adobe Flash CS5使ってるけど、エラー吐いてくれないんだよなー
設定みてみよう
親とクラス、クラス同士のやりとりは、どこからどこまでを、どこに割り振るかが 未だに自分の中で確立してないから、毎度ソース見直してどこにどう書いたか忘れるわ。
206 :
Now_loading...774KB :2010/11/28(日) 20:00:56 ID:+8fgUxBB
>>205 //ボールクラス
Ball.Update( Bar,Block );
//ブロッククラス
Ball.Update( Ball );
みたいに、相互に渡してるんだけど行儀良くないよね?
親クラス作って、そのレイヤーに各クラスの構造体もどきを宣言するわけにもいかなしなぁ
>>198 おおよかった。HTMLみたいにブラウザによって動作が違うのはもう耐えられないw
レスどうもです。
タイムラインにコード書いてるんだろ。MovieClipはダイナミックだからエラーでねー
>>206 設計以前にAS3のコーディング規約から外れすぎてるのか
そのコードをどう読んだらいいのかわからない
Ball Bar Block はそれぞれ変数なのかクラスなのか
>>210 クラスの参照を渡してる。
でも、俺の駄目なクラス設計はおいといて、
相互に干渉するクラスってどういう風に設計すればいいのかな?
>>192 RGBじゃなくてHSBを使うと虹のような色変化が簡単にできる
RGB←→HSBの変換は簡単な式なので、
HSBで変化させた値をRGBに変換して処理に渡せばOK
>>211 クラス設計の話でクラス設計はおいておくってどういうことだ!!
214 :
Now_loading...774KB :2010/11/29(月) 23:20:28 ID:dEF80y46
>>213 俺のしょぼクラスはおいといて、AS3ではどういう風に相互干渉させてるのかって事を知りたいのさ
たとえばどういう例が考えられる?
>>206 ではさっぱり状況が分からない
素直にgetterとsetterをstaticにしておいてどこからでもメソッド叩けるようにすればいいじゃない? そもそも相互に干渉するクラスってのが何を指しているのかわからない。
>>216 おい。staticにする意味わかってるかい?
そのクラスのプロパティの現在の状態を返すことがgetter,setterの意味なのに、
そのクラスのプロパティもstaticにしないといけなくなって意味が無くなるでしょ。
値が固定的であれば、そもそもgetter,setterが必要無い。
>>215 まったくだ。
クラス生成したらアレイに突っ込んでって、 クラスから親経由で、アレイに突っ込んだ各クラスにforで命令送るとかでもいいと思うけど・・・。 親でBallArray宣言、ballクラス作成したらpush、 クラス側から for(略){ 親.BallArray[i].関数(引数) } みたいに。 まぁ上の人みたいにstaticやフラグ駆使するなりいくらでもやりようはあるだろうけど。
俺プログラムとかまだまったく初心者だけど action script マスターしたら企業とかでプログラマとして雇ってもらえるの?
マスターしたら、雇うところはどこでもあるだろうが、 言語仕様完璧なだけではマスターとは言えないから、難しいモンだな。
>>217 ごめん、俺の勉強不足だ。
とりあえずソース書いた。
package{
import flash.display.MovieClip;
public class Ball extends MovieClip{
private static var _hoge:Ball;
public function Ball()
{
hoge = this;
}
public static function set hoge(hoge:Ball):void {
_hoge = hoge;
}
public static function get hoge():Ball {
return _hoge;
}
}
}
これでインスタンスをどこのクラスからでも参照できるからpublicなものなら参照も可能って言いたかったけど、基本クラスの場合はダメだねw
そもそもの
>>206 の意味がよくわかってないので的外れだったらごめん
正直独学でかなり不安なので俺にも教えてくださいw
>>221 ボールをシングルトンにする意味は全くないのに
>>206 のはシングルトンに
見えるので話がこんがらがってるな
とりあえずそこはMovieClipじゃなくてSprite使おうよ
>>206 はたぶんオブジェクト間の衝突の扱いについて聞きたいんだと思うが
そんなもん規模によるから一概には言えないんだよな
PONGレベルならどんなヘボコードでも動くだろうし
逆に高度なものならBox2Dのような物理エンジンでも参考にすればとしか
>>221 >>222 の指摘もあるように、シングルトンに見えそうでもあるけど、関係ないよね?
インスタンス化される前提なの?意図がつかめない。
もう少し、具体的な条件を書いてくれるとわかりやすいんだけど。
flashで信長の野望みたいなゲーム作れる?
馬鹿な質問をしたかもしれない
>>222 すまん、
>>222 のおかげでようやく理解できたと思う。
>>206 のが、クラス外のにどうやってアクセスするのがいいのって見えてたっすw
あとSpriteの忠告ありがとうw
>>223 >>222 のであってる。
>>206 のBallっていうの見てインスタンスと勘違いしてたっす、ごめん。
ようやく理解した?なので書いてみると、簡単な衝突判定だけならか
>>218 の人みたいに衝突用のクラスを生成するときに引数で配列とかオブジェクトを渡すっ感じが好き。
なんかスレ汚しになってごめん。
質問をさせてください。 入れ子の関係にあるクラスの間で、 子オブジェクトがremoveChildされたあと、 親オブジェクトがそれを関知して自身をremoveChildするような 方法はありますか? 具体的には 親クラスで、 子クラス内の「タイマーイベントを使ったエフェクト→removeChild(子)」 をするメソッドを呼び出す。 ↓ 子クラスでremoveChild(子)が完了したときに 親クラスでremoveChild(親)を実行する。 という流れを作りたいです。 いまのところ、親クラスでタイマーを用いて removeChild(子)されたかを定期的に検知して、 されているならremoveChild(親)を実行する というものしか思い浮かびませんが、 もっと上手い方法がある気がしてなりません。 よろしくお願いします。
DisplayObejctだったら、Event.REMOVEDつかったら?
自作クラスでも、自分でdispatchすればいいか。
子のリムーブと親のリムーブ書いた適当な関数作って、 子のリムーブのタイミングで代わりにその関数呼ぶんじゃだめなの?
質問させて下さい。 外部SWFでリンケージしたBGMを親のswfから鳴らしたいのですが上手くいきません。 //testに外部swfを読込んでフレームを移動させる所まではできたのですが・ test.content.gotoAndStop(2); //外部swfの音楽を鳴らすには、どう記述したら良いのでしょうか。 var sound_obj : Sound = new test.content.bgm01( ); // サウンドを再生 sound_obj.play(); 何卒よろしくお願い致します。
>>231 AS3.0?
親子間のクラス参照は、ちょっとだけめんどいよ
LoaderInfo.applicationDomain.getDefinitionか
LoaderContex使う
233 :
231 :2010/12/04(土) 15:14:40 ID:66ngvSVr
>> ID:FfkRSRzw お忙しい所、返信ありがとうございます。 使用しているのはas3.0です。 キーワードをgoogleらせて頂きました、申し訳ありません。 googleったサイトは、まだ私では理解ができませんでした。 今後も調べさえて頂きます、 も、もしですが、お手間を取らせて申し訳ございませんが、 簡単な記述例をご存知でしたら教えて頂ける様でしたら幸いです。 平にひらに、お願い致します。
234 :
227 :2010/12/04(土) 17:29:08 ID:mNWAnfae
googleったってすごいなw ぐぐるったw
236 :
Now_loading...774KB :2010/12/06(月) 16:36:00 ID:vmXdei4p
どういうことか今一分からないけど、テキストでxy取得できないなら適当なスプライト作ってaddchildするとか、 テキストを更にムービークリップのシンボルにでもしてみればいいんじゃないのかな
238 :
Now_loading...774KB :2010/12/07(火) 11:04:11 ID:/OKQcKxE
>>237 レスありがとうございます。
ダイナミックテキストの部分はPHPプログラム側から表示文字を変える形になります。
「右から左」はモーショントゥイーンもできますが、できればactionscriptにて実装しようと思っておりました。
for (i=0;i+mbstrlen(moji)>500;i++) {
moji._x +=i;
}
シンボルにするとダイナミックテキストの文字が変数にて指定できないようでした。
わかりにくいかと思いますが、よろしくお願いいたします。
※flaファイルをアップしても問題ないでしょうか?
>>238 ダイナミックテイストフィールドに、インスタンス名じゃなくて変数入れてるの?
だとしたら、まずそれをやめる
テキストフィールドの位置は、Textfield._x、_yでとれる
スクロールは、Textfield.scrollや、hscrollを使える
文字に直接アクセスしたいなら、Textfield.textで
それから、forループでのアニメーションは無理だから、onEnterFrameとか
setIntervalあたりを使う
ヘルプかAS2.0のリファレンス本やサイト等で、まずはTextfieldについての基本を確認するべき
240 :
Now_loading...774KB :2010/12/07(火) 15:44:28 ID:/OKQcKxE
>>239 レスありがとうございます。
後出しで申し訳ないのですが、flash liteの1.1なのでonEnterFrameやsetIntervalは使用できないようです。
自分でいろいろ試して、ある程度できるようになりました。
ダイレクトテキスト(変数moji)をシンボル化→シンボル名を指定(シンボル名simbol)
simbol.moji = "TEST";
これでひとまずは問題解決できました。
>>240 >flash liteの1.1なのでonEnterFrameやsetIntervalは使用できないようです。
それはすまんかった
しかしflash lite1.1って、Flash4ベースで、AS2.0ですらないぞ
2.0よりもはるかに制限が多いので、ごっちゃにしちゃいかん
とりあえず解決オメ
242 :
Now_loading...774KB :2010/12/07(火) 19:08:49 ID:/OKQcKxE
>>241 いえいえ、ありがとうございます。
携帯用とはいえ本当に制約多すぎで…
AS2.0だったらはるかに楽なんですが
FlashCS5でTLFテキストを使用したFlaファイルからパブリッシュした SWFファイルを他のSWFがLoaderを使って読み込むと「Test」のような型が「Test@306eb8b1」のようになってしまいます これをどうにか、もとの型に戻したいのですがどうすればいいでしょうか? ちなみにObject型に変換したらメソッドにアクセスすることはできましたが コード保管されないので気持ち悪いです。 よろしくお願い致します。
Objectじゃなくて元の型にキャストしたらいいんじゃないの?
TLFテキストを使用したSWFはLoaderで読むと何故か型がおかしくなり、 無理やりキャストするとTest@306eb8b1をTestに変換できないといわれちゃうんです(汗
あーなるほど。 Test型をswcで書き出した後に それをそれぞれで使ってやる形にするんだったっけか。 間違ってるかもしれんけど。
なるほど、SWCで書きだすとできるんですか!試してみます!
間違ってたらゴメンな
249 :
あっちゃん :2010/12/08(水) 00:33:24 ID:SqHjkwVv
突然で申し訳ないのですが、Flash について詳しく書かれていましたので書き込みさせて 頂きました。 個人でグラフィックデザインをしてますので他に聞ける技術者 がおらず途方にくれ書き込みさせて頂いております。 この度お聞きしたいのはフラッシュ環境においてのフォントを 表示するときの事です。 フラッシュ内でフォントのアウトラインをとると線がぼやけて しまうので、デバイスフォントを利用するを選び綺麗にパブリ ッシュすることが出来るのですが、この方法ですと自分のパソ コン内でしか綺麗には映らず他のパソコンでは他のフォントに マッピングされてしまいます。 サーバーにフォントを一緒にアップロードすることによってフ ラッシュ(swfデータ)がそのフォントデータを読みこんで表 示をするような事は可能でしょうか?Action scriptでフォン トデータを読み込んだり出来ませんでしょうか? お手数をおかけして申し訳ありませんが、教えて頂けると非常 に助かります。 宜しくお願いします
>>249 できるけど、フォントによってはラインセンス上、そういう行為がダメだったり
高価だったりするよ
その点は、大丈夫?
そもそもフォントのレンダリングにもいろいろあるけど、そのへんは試してみての感想?
embedなら、満足のいく結果といえるの?
251 :
あっちゃん :2010/12/08(水) 01:12:35 ID:SqHjkwVv
フォントはもう買いとったものなのでオッケーです。 フラッシュでのアウトラインはもう試しました。 イラストレータから取り入れたり、フォトショップから取り入れるのはいいのですが、もうすでにアニメーションさせているので無理です。 もうムービーデータはほぼ出来ているので、 できればデバイスフォントのままサーバーに一緒に送ってサーバー上のフォントデータとリンクできたら最高です
252 :
あっちゃん :2010/12/08(水) 01:18:55 ID:SqHjkwVv
実はこのフラッシュファイルがほぼ完成してから、デバイスフォントが他のpcで映らない事に気がついたのでかなりショックでした。
>>252 なにか勘違いしていないか?
デバイスフォントって、それぞれの実行環境にあるフォントを使うってことで
そういう名前のフォントがあるわけじゃないぞ?
あと、アウトラインとembedは、違う意味で使ってるんだが、もしかして
同じ意味で使ってる?
共有ライブラリでフォントを使うことはできるが、要は埋め込み(embed)と同じだよ?
アウトライン以前に、フォントを埋め込んで、レンダリング品質を変えて試してみたのか?
AS2にあって、AS3で廃止された機能を使いたいのでAS2で書いてswfにしようと考えています。 2点ほど質問があるのですが、 AS2で書いても現在のプレイヤーで動くのでしょうか? AS2で書いたものをswfにするのにはどのような方法が今使えるでしょうか? よろしくお願いします。
>>254 1>動く
2>意味がよくわからんのだが
それこそFlashCS5とか使えばいいだけでは?
でも、そもそもAS2でできて、3でできないことって何?
逆ならわかるが
基本的な質問ですみません。 親swfから子swfを読み込んでいるケースで 子swfから親swfの関数やインスタンスを参照する場合 _parentRoot=root.parent.parent; 等とした上で _parentRoot.関数名(); _parentRoot.インスタンス名 と記述することで参照することは理解できたのですが、 その記述をしたうえで子swf単体でパブリッシュをすると (親swfをパブリッシュした場合は、それで問題なく動作するのですが) 以下のようなエラーが出てしまいます。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at com::hoge() 制作時は子swf単体でテストをしたいので、 それをなんとか回避したいのですが、方法がわからず困っています。 どなたかご教授いただけますと助かります。 よろしくお願いいたします。
>>257 単体で動作した場合、当たり前だけど親が取得できなくなるから
_parentRootにはnullが代入される。
なので_parentRootを使っている場所にnullだった場合は処理しないようにすればいいとおもう。
if( _parentRoot ) _parentRoot.testFunc();
as3で配列の要素をインデックスを指定して捨てたいのですが 以下のような関数を定義する方法以外にもっといい方法ありますか? private function nukidashi(ary:Array, i:uint):Array { return ary.slice(0,i).concat(ary.slice(i+1) ); } var ary:Array = [ 0, 1, 2, 3, 4, 5 ]; ary = nukidashi(ary, 3); trace( ary ); // 結果:0,1,2,4,5 インデックスを指定でき、popやunshiftのように元の配列を書き換えれるメソッドが Arrayクラスにあればいいのですが ざっとリファレンスを見た感じだとありませんでした(汗 これでできるのでこれでいいかなぁとも思っていますが もっと良いやり方がありましたらご教授よろしくお願いします。
Eventクラスを継承したカスタムイベント、たとえばEnemyEventを作った場合に Eventクラスのプロパティであるtargetにお好みのオブジェクトを代入したいことってあるとおもうんだけど targetプロパティが読み取り専用だからtargetに好きなオブジェクトを代入できませんでした(汗 ちょっと無理やりでEnemyEventクラス側でtargetプロパティをgetメソッドでオーバーライドしたら EventDispacher内部で型変換ができないっていう謎のエラーが出るようになった… AS3では自分で作ったEnemyEventのようなカスタムイベントのtargetプロパティは必ずnullになるのが常識ですか? それと、個人的には作ったクラスに使わないプロパティやメソッドがあるのは気持ち悪くて それを極力無くしたりしているのですが(継承でなくコンポジションを使うなど) EnemyEventは、Eventクラスを継承しているので COMPLETE等の余計な定数も一緒についてきちゃうわけですが みなさんはそこら辺についてどういう考えをもっているのか興味深いです。 「EnemyEventのCOMPLETEって何が起きたときに呼ばれるの?」ってきかれたら 「ああ、それは呼ばれることはないです…。」って答えるのはなんかスマートじゃないなぁと思うんです。
targetってEventをDisptchしたものが入るもんだろ。 EventDispatcherを使えばちゃんと入るとおもうが。
263 :
Now_loading...774KB :2010/12/09(木) 14:08:50 ID:hBnOJteP
XMLから取得した値を日付に変換して日護計算したいです。 <parent day="2011,01,01" > <child>Item</child> <child>Item</child> </parent> こういうXMLがあり、「Item」を見つけたら親の「day」を見て、 賞味期限=2011年01月01日と出力、 10日足して 消費期限=2011年01月11日という結果を出力したいのですが、 var n = XMLから取得したdayの値; var d = new Date(n); で日付変換して任意の日数をプラスしようとしたところ、 Dateの引数にはString型のデータを入れられないという旨のエラーが出て処理できません。 var d = new Date(2011,01,01); となるようなイメージだったのですが、どなたかご教示くださいませ。 環境はCS5 のAS3で、XMLの仕様は変更できません。
>>263 そのエラーの通りじゃん
nがStringだから、数値にしてよって言われてるだけ
265 :
Now_loading...774KB :2010/12/09(木) 14:23:34 ID:hBnOJteP
>>264 ありがとうございます。
var n:Namber = XMLから取得したdayの値;
とかにすると、変換できない旨のエラーが出ます。
>>265 それ手抜きしすぎw
もし2011,01,01という値を渡したいなら、2011,01,01という塊ではなく
2011という数値(年)、01(月)という数値、01(日)という数値を
それぞれ用意する必要がある
つまり、"2011,01,01"という文字列を、3つの数値に分割するってこと
String.split()使うとか
あるいは、文字列で有効な形("月/年/月"、この場合"01/01/2011")にするって手もある
まずは数値、文字列、配列あたりのメソッドをいろいろ試して、何がどういう働きをするか、
確認してみるのがいいと思う
int(),uint(),Number(),parseInt(),parseFloat()あたりに、文字列つっこんで
どうなるかとか試してみるとか
267 :
Now_loading...774KB :2010/12/09(木) 15:20:19 ID:hBnOJteP
>>266 >文字列で有効な形
神ッ!!!!
スラッシュ区切りで2011/01/01と入れたら無視されたのでスラッシュ区切りは無理なんだと思っていました。
順序が逆だったんですね。
最高です、ありがとうございました!!
268 :
257 :2010/12/09(木) 20:21:35 ID:bxuo0qNa
>>258 、260
返信おくれてしまい申し訳ありません!
2つの板に書くのっていいことじゃなかったんですね…。
2ちゃんねるに書き込むのも
ほぼほぼ初めてで見よう見まねで投稿していたので
よく知らず、大変失礼しました。以後気を付けます。
ご指摘の通り、切り分けを行ってみたところ、
うまくいき、紆余曲折ありましたが、動作するようになりました!
ありがとうございました。
>>257 MovieClip(stage.getChildAt(0))._hoge、なんかも便利じゃないかな。
>>257 MovieClip(stage.getChildAt(0))で、プレイヤー上で一番上のswdを指定出来るから、
親にも子にも同じ名前の関数や変数作っといて、別の事かいておけば、
自分のSWFを起動した場合は自分のを、子になった場合は親のを読みに行くんで色々切り替えられる。
間違ってレス番二回も入れてしまった
271 :
Now_loading...774KB :2010/12/09(木) 23:26:48 ID:YJgHySr5
AS3(Player10),FlashCS4,WinXP 長いパスを持つ(深い場所にある)MCのRootから見た時の参照方法で質問です。 例えば、addChildで繰り返し追加した結果、root.mc0.mc1.mc2.mc3.mc4.mcA という パス(文字列)になった時、この文字列を使って参照したく思います。 安易な方法としては、getChildByName()を多用し、 getChildByName("mc0").getChildByName("mc1")getChildByName("mc2")・・・ とすれば良いかも知れませんが、これだと冗長なのでもっとスマートな方法を探して います。 (ググ"ったり、本で調べましたが分かりませんでした) 宜しくお願い致します。
そういうのまとめた関数一個作っといてその関数読みに行くだけってのはやっぱ求めてるスマートは違うかな
serchChild( childName:String ) みたいなstaticメソッド準備するのはどうだろう。
addする時にMapにつっこんどくほうがいいかなぁ。
275 :
Now_loading...774KB :2010/12/10(金) 04:23:54 ID:sFE5uT0X
>>275 計算でやっている以上無理。
元の値を保持するクラスを作るのがお勧め。
>278 パッと見ただけで恐縮ですが、 ↓ここらへんで初期値を設定しているので、 if (this._y>=movieHeight) { this._y = -5; } こういう風にしてみてはいかがでしょうか? if (this._y<=0) { this._y = movieHeight+5; } 検証はしていませんが、おそらく上下が入れ替わったことで 行きすぎたクリップを戻す処理の内容も変更する必要があるかと 思います。
280 :
275 :2010/12/11(土) 00:43:51 ID:h1Cy0rub
>>278 AS見てないけど、雪降らしてるMCを逆向きに配置すればいいのではないか
282 :
278 :2010/12/11(土) 10:52:18 ID:uZux/2Xv
>>279 >>281 レスありがとうございました。
279さんの
if (this._y<=0) {
this._y = movieHeight+5;
}
に加えて、
i=-1-Math.random()*2
に修正したら、希望の動きを実現できました。ありがとうございました。これからもっと勉強したいと思います。
mtasc -header 800:600:25 -main -swf default_mtasc.swf -cp ~/worksp/test/src src/com/test/test.as このようにコンパイルしようとすると、 Directory 'std' containing MTASC class headers cannot be found : Please install it or set classpath using '-cp' so it can be found. のようなエラーで失敗してしまいます。 正しくはどのように書けばいいのでしょうか?
ExternalInterfaceを使わずに、javascript側からasの関数を呼ぶことはできますか? htmlにはobjectとembedで貼付けしています。
使用環境を書こうよ
288 :
Now_loading...774KB :2010/12/11(土) 23:16:22 ID:7kR4FmVr
AS3(Player10),WinXPです。
下のような中空の図形の描画するにはどうすれば良いでしょうか?
http://uproda11.2ch-library.com/277227tDX/11277227.png オレンジ色の部分はパスで、パスを繋いでできた2つの環状図形の間に
緑色を流し込むような感じです。
※CS4などのバケツツールで流し込む感じです。
本などを読むと、ドーナナッツ図形を形成するのにビットマップで塗りつぶす
方法が紹介されていいますが、これだと塗りつぶし用の図形を別に持って
いなければならないためこの方法は避けたいです。
frocessingはで塗ることも考えましたが、ライブラリーを用いないで塗る
方法を探しています。
すいません。 (上は) ドーナナッツ → ドーナッツ
>>288 何も難しいことないんじゃ?
パス描いて塗りつぶし。
塗りつぶしはGraphics.floodFill()
パスもGraphicsの中にあったはず
291 :
288 :2010/12/12(日) 14:45:14 ID:6zWKbxgs
>>290 floodFill() について調べましたが、これは BitmapData.floodFill で、
確かにバケツツールのような塗りができます。
しかし、特定の点を通る曲線パス(連続曲線・スプライン曲線)を drawPath()
でやろうとしましたが、やり方が分かりません。
再度アドバイス願います。
>>291 flexのリファレンスGraphicsページ良く読め
293 :
288 :2010/12/12(日) 15:52:02 ID:6zWKbxgs
flashもflexもGraphicsは同じ。 curveToじゃだめなの? ベジェじゃだめなら、スプライン曲線の描画関数はなさそうだから、自作するしかない。
295 :
Now_loading...774KB :2010/12/12(日) 21:07:40 ID:F02GT1D3
はじめまして。 TwitterのAPIからデータを取得したらイベントを発生させたいと 思っています。 AS3の自作Twitterクラスのコンストラクタで、 addEventListener("twit", onTwitterComplete); としています。 Mainクラスから毎フレーム dispatchEvent(new Event('twit')); しているのですが、onTwitterCompleteが呼ばれません。。。 Mainクラスではtwitイベントを検知できるのですが、 Twitterクラスでは検知できません。 どうすればよいのでしょうか?
296 :
Now_loading...774KB :2010/12/12(日) 21:18:48 ID:F02GT1D3
295です。 自分のクラス内でdispatchしたら listenできるみたいです。 他のクラスにイベントを送信するにはどうすればよいのでしょう。。?
297 :
Now_loading...774KB :2010/12/12(日) 21:25:58 ID:F02GT1D3
>>294 curveToだと特定の座標を頂点とする曲線を描画するのにコントロールポイントの位置を計算
しないといけないので避けています。
299 :
Now_loading...774KB :2010/12/12(日) 23:09:44 ID:F02GT1D3
295です。 自己解決しました。 発信側のクラスでlistenしつつ、 登録する関数は他クラスにすればできました。
>>298 計算式なんてググれば見つかるんだから自作すれば?
準備されてなければできないんだったら、できないよね。なにも。
302 :
Now_loading...774KB :2010/12/13(月) 20:16:04 ID:lNJU+C/P
AS3です。 テキストボックスの文字についてです。 テキストボックス内で、文字上に詰まりすぎいるため下に調整したいです。 (1)テキストボックス内で、文字の表示する縦方向の位置を調整する仕組み (2)leftMargin、rightMarginのように、縦方向の余白を調整する仕組み のいずれかはあるでしょうか? よろしくお願いします。
303 :
Now_loading...774KB :2010/12/14(火) 03:22:01 ID:WRZAUxnY
WinXP-ProでFlashProCS4,AS3,Player10 入れ子のMCからStageのプロパティを参照するにはどうしたら良いでしょうか? 今やっているのは、Stage(root)にMC0をaddChildして、更にこの中にMC1をaddChild して、ここから stage.quality = StageQuality.MEDIUM; や stageW = stage.stageWidth; などとして参照&代入したく思っています。 ところが、ムービーのデバッグでは stage.quality = StageQuality.MEDIUM; の行 でエラーとななります。
>>304 そのページAS1.0あたりの解説だから、今から参考にするにはあまり適さない
そして、Flashドキュメントの設定でAS3.0になっていると、AS2.0以前の記述では
エラーになったりする
>どうしたらいい
AS3.0の基本を解説をしているサイトを参考にする
こことか↓
ttp://hakuhin.jp/as3.html
>>305 丁寧な回答ありがとうございます
そのサイトを見て勉強しようとおもいます!
307 :
Now_loading...774KB :2010/12/14(火) 23:09:58 ID:SvfVtcrU
AS3 で質問です。 EventDispatcher.hasEventListener(eventType) でイベントリスナーの有無を調べることができますが、特定のリスナーの登録を調べる方法はありますか? 例えば以下のコードで _sprite.addEventListener(Event.ENTER_FRAME, _loop1); if (_flag == true) _sprite.addEventListener(Event.ENTER_FRAME, _loop2); _sprite.hasEventListener(Event.ENTER_FRAME); // true 変数 _flag を参照せずに _sprite に _loop2 がリスナーとして登録されたか調べるにはどうしたらいいでしょうか。
308 :
Now_loading...774KB :2010/12/14(火) 23:23:06 ID:cZazDILt
なんか、ちぐはぐな質問だと思うんだが。 >_sprite.hasEventListener(Event.ENTER_FRAME); には、_flagは関係ないけど。
309 :
Now_loading...774KB :2010/12/14(火) 23:26:15 ID:RkbJKcKU
310 :
Now_loading...774KB :2010/12/14(火) 23:46:14 ID:SvfVtcrU
>> 308 >> 307は、 _flag が true の場合に _loop2 をエンターフレームリスナーとして登録、 _loop2 が登録されたか _flag を参照せずに調べたいが、 _sprite.hasEventListener(Event.ENTER_FRAME); では _loop1 が登録されているので true を返す それなら _sprite に _loop2 が登録されているか調べるには? という例にしたかったんですけどおかしいですか?
やっと意味がわかった。 _loop1と_loop2があることが認識できなかった。 最初の2行だけで十分。逆に混乱した。 結論から言うと無い。 とはいえ、登録されているかどうかわからない関数は いったんremoveしてから再度登録すれば良いだけで この方法で問題がある場合が思いつかない。
あ、無いことは無い。けど、flag管理する手間と同じような気がする。
313 :
Now_loading...774KB :2010/12/15(水) 00:10:37 ID:DWxVF8Rn
>>311 やはりありませんか。
方法としてはとりあえずremoveしちゃうかフラグ管理するかってことですね。
それらの方法で実装を進めることにします。
ありがとうございました。
314 :
Now_loading...774KB :2010/12/15(水) 06:12:47 ID:kmIAAnjx
wonderflの作品をFlashCS4に適用した際の質問です。
ttp://wonderfl.net/c/hWk9 の背景を白からステージの色にしようと
[SWF(width = "465", ・・・, backgroundColor = "#ffffff")] の行を外したところ
白のままでした。
どうしたら良いでしょうか?
315 :
314 :2010/12/15(水) 21:51:00 ID:Qyimsn8M
(自己レス) 解決しました。var buffer:BitmapData = new BitmapData(・・・)の BitmapDataの第3引数 をtrueにして、第4引数で透明度が0になるよう0x00ffffffなどとすればOKでした。
316 :
Now_loading...774KB :2010/12/16(木) 16:21:13 ID:+aa+fzut
AS2で質問です 変数の名前を変数で指定する方法はありますでしょうか 例えば hoge='abcd'; root.変数名 = 777 trace(_root.変数名); 結果777
318 :
Now_loading...774KB :2010/12/16(木) 16:22:25 ID:+aa+fzut
失礼しました hogeは変数名のことです
319 :
Now_loading...774KB :2010/12/16(木) 16:29:44 ID:+aa+fzut
<data1 name="hoge" time="1234567890" /> <data2 name="hoge" time="1234567890" /> このような形式のXMLがあるときに、data1,data2のどちらであるのかを取得したいです。 どのような感じで取り出せるのでしょうか?
ほんとうにそんな形式なの?DTDかスキーマ無いの? <data type="data1" name="hoge" time="1234567890" /> <data type="data2" name="hoge" time="1234567890" /> とかの間違いじゃなくて?
Actionscript3.0 CS4についてです。 クリック音をつけたところ、音が微妙に遅れて聞こえます。 音声の頭はぎりぎりまで削りました。10KBくらいです。 MP3はse_clickで書き出ししています。 //クリック音生成 var click_snd:Sound = new Sound(); click_snd = new se_click(); //ムービークリップクリックで再生 mc.addEventListener( MouseEvent.CLICK, fn); function fn(event:MouseEvent):void{ click_snd.play(); }
>>322 CLICK じゃなくて MouseEvent.MOUSE_DOWN はダメ?
>>323 両方書いて比べたところきちんと差が出て聞こえました。
MouseDownでいきたいと思います!ありがとうございます。
325 :
Now_loading...774KB :2010/12/17(金) 17:21:39 ID:+aDUJ6pr
while ループ中に ダイナミックテキストにループ回数を表示したいのですが どうすればいいでしょうか while{ _root.counter++; 処理 } だとダイナミックテキストに反映されませんでした
関数が終わらないと表示更新がされない仕様なので、 whileループではなく、Timerを使う。
>>325 ループが終わるまで描画更新されないから、「ループ中に」というのは無理
繰り返しを描画に反映させる場合は、ループ使わずEvent.ENTER_FRAMとかだけど
その記述はAS1.0あたりじゃないですか?
ASのバージョンも書かないと、適切な回答つかないすよ
328 :
Now_loading...774KB :2010/12/17(金) 18:08:47 ID:+aDUJ6pr
ありがとうございました。 最近はじめたのでちんぷんかんぷんですみません
329 :
Now_loading...774KB :2010/12/17(金) 21:44:17 ID:h9cLccW2
・actionscript3
・cs4
・
http://sky.geocities.jp/lizchan_kiteyo/index.html ・上記のアニメーションを作りました。
・現在は全てのボタンをクリックすると、画面上に3つのアニメーションが残るのですが、
やりたい事は、最後に押したボタンのアニメーションだけを残るようにしたいです。
・例えば最初に「start01ボタン」を押した時、「start01ボタンで動いたアニメーション」が
動きます。次に「start03ボタン」を押したときに「start01ボタンで動いたアニメーション」
が最初のフレームに戻し、「start03ボタンで動いたアニメーション」だけにしたいと思っています。
・本当に初心者で、用語やコードを張る位置も分からないので、コードの張る位置なども教えてほしいです。
mc01.stop();
this.mc02.stop();
this.mc03.stop();
this.start01.addEventListener(MouseEvent.CLICK, onClickStart1);
this.start02.addEventListener(MouseEvent.CLICK, onClickStart2);
this.start03.addEventListener(MouseEvent.CLICK, onClickStart3);
function onClickStart1(event:MouseEvent):void
{
this.mc01.play();
}
function onClickStart2(event:MouseEvent):void
{
this.mc02.play();
}
function onClickStart3(event:MouseEvent):void
{
this.mc03.play();
分かる人よろしくお願いします。
AS3で質問があります Timerを使ったときに var time = new Timer(1,0); としているのですがなぜか3ケタ目が1秒になってしまいます どうしたら4桁目を1秒にすることができるでしょうか? よろしく尾根がします
>>325 updateAfterEvent()ってwhileん中じゃ効かないっけ。マウスムーブとかなら使えるんだけど。
RTMFPのP2P通信でローカルでは
NetGroup.Neighbor.Connectを受け取れて通信しあうことができるのですが
ほかのPCとでは
NetGroup.Connect.Successと出るだけで通信しあうことができません。
ポートやFW関係など、別に設定しないといけないことってあるのでしょうか?
http://cc.rtmfp.net/で調べると1 ,4,5番目がNoとなっています。
335 :
331 :2010/12/19(日) 02:24:27 ID:OTGlMLlC
>>333 すいません変換おかしかったです。。。
もうちょっと質問を具体的にすると
var timecount:int = 0;
var timer:Timer = new Timer(1,0);
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
time++;
timecount_disp.text = time.toString() + "ミリ秒";
});
336 :
331 :2010/12/19(日) 02:27:59 ID:OTGlMLlC
>>335 途中で投稿してしまいました スイマセン。。
var timecount:int = 0;
var timer:Timer = new Timer(1,0);
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
timecount++;
byousuu.text = timecount.toString() + "ミリ秒";
});
こうしてインスタンス名byousuuという部分のテキストに
ミリ秒単位で表示させようとしてるのですが1秒で100ミリ秒となってしまいます
ちゃんと1秒で1000ミリ秒としたいのですがどうすればいいのでしょうか?
改めてお願いいたします
AS3.0についての質問です TextFieldに文字列を代入して表示しているのですが、途中で文字が途切れてしまいます フォーマットなどはいじらずに“あいうえおかきくけこ”を表示してみると あいうえおかきくけ というように途切れてしまいます 表示範囲を変更するにはどうすればいいでしょうか?
339 :
Now_loading...774KB :2010/12/19(日) 10:53:03 ID:JGcenexZ
AS3で質問です。 DisplayObjectにdrawRectなんかで書いた面を一部分抜く(消去して透明にする)にはどうしたらいいでしょうか。 よろしくお願いします。
>>338 width と textwidth を混同していました
ありがとうございます
>>339 blendModeで消去とかありそうな
342 :
Now_loading...774KB :2010/12/19(日) 19:10:23 ID:ZNuOu8Xq
as2で質問です。 リンケージしたMCにテキストをつっこんで動かそうと思うのですが どうも重たいです テキストをビットマップにすれば軽くなるということなので ドロップシャドウなどのフィルタをかけたところ若干軽くなったきがしますが、やはり重いです。 他に良い方法はないでしょうか
CS4,AS3です オブジェクトのベタ塗り色の変更はどうすれば良いでしょうか? △ → ▲ (白の方は枠線はありません[背景は青です]) の感じです。 BitmapDataのfillColorがありますが、オーサリングで描いた図形の色を 単純に変更するだけです。
as3とjavascriptでデータの受け渡しをするにはどうしたらいいのでしょうか? 質問が曖昧すぎるのもあるとおもうので 参考サイト等でもいいのでご教授ください よろしくお願いいたします
>>345 ググったら山の様に出ると思うのだが・・・
349 :
Now_loading...774KB :2010/12/21(火) 09:16:32 ID:RN0cpT2U
CS4のAS3 rectObjという3つの矩形Sprite(それぞれ違う幅を持つ)をステージのX軸方向に addChildで配置しようとしています。 一旦addChild後、各々の幅を元にX位置をを決めて設置したいのですが、試しに trace("幅= "+getChildByName(rectObj.name).width); とすると全部ゼロになります。 newした子のプロパティ取得はどうしたら良いでしょうか?
350 :
Now_loading...774KB :2010/12/21(火) 13:56:57 ID:V+NRS8Ra
環境:Adobe Flash CS4、ActionScript3.0使用
やりたい事:flashサイトにbgmを流し、それを一つのボタンで停止・再生を制御したいです。
例:
http://www.dbl-e.com/のフッターエリアにあるsound off/onのボタンのような感じです。
現状:再生/停止の2ボタンで制御するやり方はできたのですが、一つのボタンで制御する方法がわかりません。
宜しくお願い致します。
>>349 各々を生成したら適当な配列に突っ込む。
var rectObjList:Array = new Array();
for(三回){
rectObj = new Sprite();
rectObjList.push(rectObj);
}
これでrectObjListの0〜2に入ったんでaddChild(rectObjList[1])なりrectObjList.widthなりrectObjList.graphics.〜なりお好きにどうぞ。
ごめんかき間違えた addChild(rectObjList[1])なりrectObjList[0].widthなりrectObjList[2].graphics.〜なり で。
>>349 newで作ったら、widthとか最初から設定されてたっけ?
ちゃんとコンストラクタとかで設定してあげてないとダメだったような。
newして、addChildする前にrectObj.widthを設定して、
その後addした後に、traceして比較したらわかるんじゃないかな。
>>350 フラグで管理したら?
var isPlay:Boolean = false;
とか最初にしておいて、ボタンのハンドラに
if ( isPaly ) {
// 音を停止するスクリプト
} else {
// 音を再生するスクリプト
}
isPlay = !isPlay
で行けると思う。
toggleButtonでもいいけど。
354 :
350 :2010/12/21(火) 15:35:26 ID:WXBatuso
>>353 申し訳ない...
初心者すぎてわかりません
>>354 2ボタンでやってるときの再生ボタンの処理スクリプトはどうやってるの?
356 :
350 :2010/12/21(火) 15:58:19 ID:WXBatuso
>>355 こんな感じです。
【1フレーム目】
asレイヤー:アクションを記入
//サウンドオブジェクト
var sound_obj = new Sound(_root);
stop();
btnレイヤー:ボタン「再生」「停止」を配置
【2フレーム目】
asレイヤー:mp3データを配置
btnレイヤー:フレームのみ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
【900フレーム目】
asレイヤー:アクションを記入
gotoAndPlay(2);
btnレイヤー:フレームのみ
357 :
350 :2010/12/21(火) 16:05:05 ID:WXBatuso
>>355 申し訳ない
356にas書くの忘れてた..
本当は以下のような構成です。
■1フレーム目
□asレイヤー:アクションを記入
//サウンドオブジェクト
var sound_obj = new Sound(_root);
stop();
□btnレイヤー:ボタン「再生」「停止」を配置
//ボタン「再生」に入れたasは
on ( press ) {
play();
}
//ボタン「停止」に入れたasは
on ( press ) {
stop();
}
■2フレーム目
□asレイヤー:mp3データを配置
□btnレイヤー:フレームのみ
■900フレーム目
□asレイヤー:asを記入
gotoAndPlay(2);
□btnレイヤー:フレームのみ
>>356 1フレーム目に
var isPlay:Boolean = false;
追加
//ボタン「再生」を
on ( press ) {
if ( isPaly ) {
stop();
} else {
play();
}
isPlay = !isPlay
}
に変更したら、再生ボタンで再生停止できないかな?
359 :
350 :2010/12/21(火) 17:07:51 ID:WXBatuso
>>358 さんくす。
追加と変更+停止ボタンの削除をしてみました。
自分のやり方が悪いと思うのだけど、
再生後「再生ボタン」を二度押すと、停止はせず飛び飛びになってしまいます...
あと今気づいたのですが、自分のこのコードはもしやAS1でしょうか?
AS3で作りたかったのですが、どなたかお知恵を...。
質問です ActionScript3のコンポーネントで textareaに外部テキストを読み込んで表示したのですが テキストの改行されている部分が2重改行となってtextareaに表示されてしまいます テキストの内容 ああああああ いいいいいい うううううううう textareaの表示内容 ああああああ いいいいいい うううううううう どうしたら同じように表示するでしょうか?
AS3のスクリプトも書いておきます。 textareaのインスタンス名はtextboxと設定してあります。 import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; var textLoader:URLLoader = new URLLoader(); var textRequest:URLRequest = new URLRequest("aaaa.txt"); textLoader.addEventListener(Event.COMPLETE, loadEnd); textLoader.load(textRequest); function loadEnd(eventObject:Event):void{ var txtContents:String = eventObject.target.data; textbox.text = textContents; } よろしくお願いします。
テキストファイル(=aaaa.txt)の改行コードがCRLFなんだろう。 CRにしたら良いと思うよ。
363 :
361 :2010/12/21(火) 22:58:43 ID:HAbwyywF
>>362 改行コードをCRにしたら思い通りの表示ができました
ありがとうございます
364 :
Now_loading...774KB :2010/12/22(水) 04:53:07 ID:IYlJcGR5
インバースキネマティクス(IK)で質問です(当然AS3) 3D版のIKの情報をご存知の人いませんか? 「Flash Bone IK インバースキネマティクス 3d」や「ActionScript 3.0 "fl.ik.IKBone"」やらで ググりましたが目的のサイトなどは見つかりませんでした。 (もしかして、本当に無理?)
IKボーンって単なる概念(つまり数学)だから、FLASHに限定した話じゃないんじゃないの? と、知らずに言ってみる。 FLASHに関わるのは表示部分だけだよね。
質問させて下さい。 ムービークリップ1(mc1)の中にある ムービークリップ2(mc2)のマウスの反応を無効にしたいのですが。 mc1 ― ボタン1 └ mc2 mc1.mouseEnabled = false; mc1.mc2.mouseEnabled = false; としますと、ボタン1がメソッドにアクセス出来ませんとエラーになってしまいます。 mc2のムービークリップのマウスの反応のみ無効にしたいのですが 良い処理の仕方はあるでしょうか・・・。
367 :
Now_loading...774KB :2010/12/22(水) 13:39:06 ID:BUPCJv6u
上の方へレスがつく前で申し訳ないのですが、わたしも質問させてください。
ttp://www.peachjohn.co.jp/ の中央のFlash下部のように、左右にスライドするメニューを作りたいと考えています。
FlashProCS5・AS3で、現在のソースは
---
const btnWidth:int = 230 ; //ボタンの幅
//右
arrow_r.addEventListener(MouseEvent.CLICK, rSlide); //arrow_rは右端の矢印
function rSlide(event:Event)
{
menuBtns.x -= btnWidth; //メニューボタン1枚分ずつ移動
if(menuBtns.x<=btnWidth*-5){ menuBtns.x=0 } //ループするように見せるための位置調整
}
//左
arrow_l.addEventListener(MouseEvent.CLICK, lSlide); //arrow_lは左端の矢印
function lSlide(event:Event)
{
menuBtns.x += bnWidth; //メニューボタン1枚分ずつ移動
if(menuBtns.x>=0){ menuBtns.x=bnWidth*-5 } //ループするように見せるための位置調整
}
---
としています。目指す場所からだいぶ遠いですが…ループだけなんとかできた、というところです。
参考サイトのほうは、バナーの幅ごとに止まりながらループするトゥイーンが適用されていて、左右の矢印ボタンにマウスオーバーしている間、そのスピードが速まります。この指示はどのように書いたらいいでしょうか。
(上でMouseEvent.MOUSE_OVERでなくMouseEvent.CLICKにしてしまっているのは、"マウスが乗っている間じゅう繰り返す"方法がわかるまでの仮の処理です(>_<))
いろいろ検索してfl.transitionsというクラスを使うのかなと感じたんですが、「クラス」というものの使い方が本を読んでも検索しても理解できず…。
できることなら、逆にソースからから仕組みを学びたいと思うのですが、よろしければどなたかサンプルソースを書いていただけないでしょうか。
もちろんそうでなくても、どんなことでもヒントをいただけたら嬉しいです。
もうここで何日もつまっています。どうぞよろしくお願いします。
368 :
349 :2010/12/22(水) 22:54:00 ID:S6ml2AOg
>>351-353 レス有難うございます。
一応、rectObj.widthで幅を設定し、addした後にtraceしたのですがやっぱりゼロでした。
spriteは中にdrawGraphicsとかmcなんかの目に見えるオブジェクト何もないと大きさないんじゃなかったっけ。
370 :
Now_loading...774KB :2010/12/24(金) 17:45:40 ID:2Oo2wb4W
BetweenAS3で時間をフレーム単位にすることはできますか? fpsが下がったときtweenの動きも一緒に遅くなるようにしたいと思っています。 代替方法でも良いので教えてください。
・ActionScript3 ・cs4 ・初心者 質問です。 下記のコードで5つ書いて、5つボタンを作成しました。 4つ目のボタン作成までは素直に動いていたのですが、 5つ目のボタンを作ってコードを書いたのですが ボタンをクリックしても、5つ目のボタンだけランダムでしか作動しなくなりました。 たくさんのボタンを作る時は、何か他に記述しなければ動かなくなるのでしょうか? 分かる方、何か対策orコードなどを教えてください。 kaeru_btn.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame_3); function fl_ClickToGoToAndPlayFromFrame_3(event:MouseEvent):void { kaeru.gotoAndPlay(2); }
自己解決できました ボタンは静止テキストで「・カエル」としているのですが、 なぜか「カエル」部分を押しても動かず、「・」の部分にしかクリックが反応しませんでした。 今いろいろ試しましたが・・・・理由が分かりません。><
「・」を外すと「カエル」部分にも反応するのですが、「・カエル」と入れると「・」にしか反応しない。>< なぜだろうか?入れなおしてみたりしたけど…分からない・・・
「・」を「◇」に変えてみたら・・・◇の線の部分しか反応しない…なんだこれ
何度もすみません。 今わかった事は「5つ目ボタン」だけ、先頭の文字の左部分しかクリックに反応しません。 クリックを全部の文字に反応させたいのですが、どうしてこうなったのかが分かりません。 分かる方がいれば教えてください。 一人でたくさん書きこんで、スレを汚して申し訳ございません。
自己解決できました。 静止テキストをダイナミックテキストにしてみたら、キチンと反応するようになりました。 お騒がせしてすみませんでした。
379 :
367 :2010/12/27(月) 12:55:43 ID:Sp6shU6X
>>370 ありがとうございます!KTweenで挫折したんですが、Tweenerのほうが情報多そうですね。
開発終了したと聞いたので、そういえば触っていませんでした。
やってみます!
380 :
Now_loading...774KB :2010/12/28(火) 02:33:12 ID:KUAojYYb
as3 + javascriptでの質問です function test(){ alert("テスト"); } ExternalInterfaceを使用してJavascriptの上記functionを呼びだしたところ その後ブラウザがフリーズしているわけではないのに操作できなく アラートダイアログのOKボタンも押せず毎回ブラウザを強制終了するしかなくなります 環境は Win7 Ultimate 64bit Flash CS5 Firefox 3.6 です よろしくお願いします
381 :
380 :2010/12/28(火) 03:01:55 ID:KUAojYYb
追記です document.getElementById("").innerHTML等で内容を書き換えるだけなら そういうった現象はおこらずアラートダイアログを出した場合にのみ上記の現象が発生します
全くの初心者です。 複数の画像埋め込みで着せ替えとか ただのドラッグで画像が動くプログラムが作りたいんだけどどうしたらいいの? 調べてもjavaとかしか出てこない。。 参考になるサイトとかあったらよろしくお願いします。
383 :
380 :2010/12/28(火) 04:58:34 ID:KUAojYYb
自己解決しました flashのパラメータwmodeをtransparentとしてやることで正常動作するようになりました
384 :
Now_loading...774KB :2010/12/28(火) 16:45:03 ID:YX5aUnWZ
AS3の勉強をしています。 AS2まではattachMovie時にインスタンス名を付けられていたのですが addChildの場合はどうやったらインスタンス名を付けることができるのでしょうか 当たり判定ができずに困っています。
AS2の事がわからんけど、たとえば、 var button1:Sprite = new Sprite(); _screen.addChild( button1 ); ってやったときに、button1がインスタンスなわけで、 button1でアクセスすれば何も問題がないんだけど、 どういうこと?
nameプロパティ使えばいいんじゃね?
>>384 AS2.0からの移行組だけど、インスタンス名必須な情況がわからない
AS3.0では基本的にインスタンス名を使わずに、インスタンスの参照を使うんだと
388 :
Now_loading...774KB :2010/12/29(水) 00:03:22 ID:NdUXaEsJ
>>385 ライブラリから複数addChildしたとき例えば弾幕とか
var mc1:mc=new mc();
addChild(mc1);
これだとmc1という名前になるので…
どうも勝手が違ってよくわからんとです
>>386 addChildしたあとに
mc1.name=mc0001とか?
それ試してみましたけどどうもうまく動かないです
if (this.hitTestObject(mc0001){}が反応しないというかエラーでパブリッシュできませぬ
>>387 ふむふむ
入門書みましたがそのへんのことが全く書いてなかったので
インスタンスの参照でググってみます
ありがとうございます
>>388 文字列だから mc1.name="mc0001"; では?
>>388 mc1に参照が保持されてないなら、保持されるようにする
配列につっこんでいくとか、方法はいろいろあると思うけど
391 :
Now_loading...774KB :2010/12/29(水) 00:48:51 ID:kO7RYRBA
年末お忙しいところすいません。AS3でCS4です。 DataProviderとDataGridを使ってCSVから読み込んだデータを元に 一覧(要はデータグリッド)を作ったのですが、列のみを選択する方法は 無いのでしょうか? 例えば [順位] [機種名] [メーカー] [OS] [周波数] [Quadrant結果] 1位 Desire HD 001HT 台湾HTC Android 2.2 1GHz 1718 2位 Galaxy Tab SC-01C 韓国Samsung Android 2.2 1GHz 1055 3位 Galaxy S SC-02B 韓国Samsung Android 2.2 1GHz 988 4位 GALAPAGOS 003SH シャープ Android 2.2 1GHz 895 5位 HTC Aria (S31HT) 台湾HTC Android 2.2.1 600MHz 880 の場合、[〜〜]が列タイトルなので、どれかをクリックすると(例えばメーカーを クリックすると)[メーカー]の列がハイライトされる感じです。 ※つまりはExcelでの列選択です。行選択は出来ました。
列選択は用意されてなさそうな。 タイトルが選択されていたらハイライトする、みたいなバインディングを各行にできないかな?
393 :
391 :2010/12/29(水) 15:41:53 ID:gc3vldym
>>392 レス有難う。
そうですね、最低タイトル選択ができればOKなのですが、これにはソート可
の状態にしなければならいないのですが myDataGrid.sortableColumns = false;
にしているので・・・
どなたか(ソート無関係の)タイトル選択の方法分かりますか?
394 :
Now_loading...774KB :2010/12/30(木) 20:48:49 ID:Hu1Ptf2f
FlashCS4,AS3でComboBoxの質問です。
連想配列とDataProviderを使ってComboBoxにデータを流し込んだ筈なのですが、
下のSWFのように同じ文字列(最後のデータ:Celeron)しか出ません。
http://swfup.info/view.php/0432.swf ASの抜粋は下の通りです
var dataArr:Array = ["Pentium","Core i7","Celeron"];//表示データ
myComboBox.prompt = "CPU製品群";//初期状態
myComboBox.move(10, 10);//位置と大きさ
myComboBox.setSize(150, myComboBox.height);
for (var idx0:int=0; idx0<dataArr.length; idx0++) {
tmpObj.product = dataArr[idx0];//tmpObjはObjectインスタンス
dataProv.addItem(tmpObj);
trace("Data= "+tmpObj.product+", "+dataArr[idx0]);// 正しく出ます
}
myComboBox.dataProvider = dataProv;
myComboBox.labelFunction = xGetLabel;
addChild(myComboBox);
色々調べましたが、原因が分かりません。また、宜しくお願い致します。
>>394 tmpObjを使いまわしてるせいで、dataProvの各要素が全て同じインスタンスを参照してる状態になってる
tmpObj.product = dataArr[idx0];をtmpObj = {product : dataArr[idx0]};とでもして毎回新しいインスタンスを作れば解決できると思う
396 :
394 :2010/12/30(木) 22:06:09 ID:Hu1Ptf2f
>>395 正にそうです(自己解決しました)。for文で毎回
var tmpObj:Object = new Object();
すればOKでした。
さんきゅう!
flex4 についての質問です。 ある親コンポーネントにmxmlグラフィックスの子コンポーネントを追加したとします。 親をmatrix3Dを通じて変形させたとき、子のmxmlコンポーネントも同じように変形させたいのですが子が変形しません。 具体的には以下のとおりです。 var myMXMLGraphic:myComponent = new myComponent; //mxmlグラフィックスのコンポーネントを生成 var parent:UIComponent = new UIComponent; //親コンポーネントを生成。UIComponentにしなくてもよい? parent.addChild(myMXMLGraphic); //子を親に追加。 parent.z = 0; parent.transform.matrix3D.prependRotation(100,Vector3D.X_AXIS); //親を変形 親をUIComponentにせず他のクラスにしたほうがいいのでしょうか? よろしくお願いします。
WindowsXP、FlashCS4でFlashを作っています。 よく使うライブラリ(asファイル)が結構増えてきたのですが、新しいFlashを作るたびにライブラリもコピーしてフォルダの直下に入れています。 同じファイルが複数あると修正する時とか大変そうなのでまとめたいのですが、fla以下に置いてなくても自動的に中のライブラリを読み込んでくれるようなフォルダは存在するでしょうか? phpの設定で言うところの「include_path = ほにゃらら」と同じで、そのフォルダの中にライブラリを放り込んでおけばfla以下にライブラリが無くてもそっちから読み込んでくれるという感じです。
>>398 メニューから編集>環境設定>ActionScript>「ActionScript2.0設定」と「ActionScript3.0設定」ってボタンがあるから
該当するバージョンの方を押す>ソースパスとかを設定できるダイアログが出る
その中にパスを入力しておけば探しに行ってくれるようになると思う
手元にCS5しかないけどCS4でもたぶん同じ
FlashCS3、AS3です img.swf(rootの1フレーム目にhoge_mc、2フレーム目にhuga_mcが配置してあり、FlashCS3、AS3でパブリッシュ) このimg_swfを別のswfで読み込もうとしています。 ↓以下を1フレーム目に直書き var lo:Loader = new Loader(); var load_swf_name:String = "img.swf"; var url_req:URLRequest = new URLRequest(load_swf_name); lo.load(url_req); lo.contentLoaderInfo.addEventListener(Event.COMPLETE, load_swf); function load_swf(eventObject:Event):void{ var load_mc:MovieClip = MovieClip(this.lo.content); this.addChild(load_mc); load_mc.gotoAndStop(1);※ trace(load_mc.numChildren); trace(load_mc.getChildAt(0)); } ※の所の停止フレームが1の場合の出力結果 1 [object MovieClip] ※の所の停止フレームが2の場合の出力結果 1 null 停止フレームを2にして実行するとhuga_mcが表示されているものの getChildAt(0)がnullで取得できません 取得するにはどうしたらよいでしょうか
402 :
Now_loading...774KB :2011/01/03(月) 21:27:45 ID:azI6zHGt
OpenSocialスレはまったくと言っていいほど機能してないのですが mixiアプリに関するFlash(AS3)+Javascriptの質問はどこでするのが正しいでしょうか?
403 :
Now_loading...774KB :2011/01/04(火) 05:03:05 ID:Lm31EWW9
AS3,Player10,CS4です。フレーム移動の際のTimerオブジェクトの破棄が上手く 出来ません。 現在、1フレ目に500msec間隔で点滅するMC(mc0)があり、これは下のASで制御しています。 timerObj.delay = 500;//Timerオブジェクトと遅延時間 timerObj.addEventListener(TimerEvent.TIMER,oscillation_on); function oscillation_on(evt:TimerEvent) { mc0.visible = ! mc0.visible; } timerObj.start(); ※1フレ目にはY軸で回転するアニメーション(traiangle)があります。 ここでEnterキーを押して2フレ目(mc0とtraiangleは無い)に移動する際、Timerオブジェクトを 破棄するため下のようにしました。 timerObj.stop(); removeEventListener(TimerEvent.TIMER,oscillation_on); timerObj = null; removeChild(traiangle);//回転アニメーションの削除 traiangle=null; gotoAndPlay(2); しかしデバックモードでプレビューするとエラーは出ないのですが、通常のプレビューでは Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 が(恐らく500msecで)出力され、回転アニメが出続けています。 (Timerオブジェクトは、ちゃんとstopして、removeEventListenerして、nullにしているのですが・・・) どこに問題があるのでしょうか。お願いします。
>>403 timerObj.removeEventListener
>>404 あ〜そうだった・・・
さんきゅうです!
すいません。連投します。 timerObj.removeEventListener にしましたが駄目でした。その代わり、 timerObj.stop(); timerObj.removeEventListener(TimerEvent.TIMER,oscillation_on); timerObj = null; removeChild(traiangle);//回転アニメーションの削除 traiangle=null; を2フレ目に移動させればOKでした。
そのフレーム移動の操作内(この場合キーボードイベントenter)にタイマーイベントの破棄入れりゃいいんじゃないのかな・・・
408 :
Now_loading...774KB :2011/01/05(水) 19:25:23 ID:kXx0OHG0
アクセサメソッドの利用法で質問です(CS4,AS3,WinXP) Papervision3DのReflectionViewクラスをextends した public class RefView というクラス内 にアクセサメソッドの定義として下を書きました。 var _bb:int=50; public function get bb():int { return _bb;//値_bbをRefViewのプロパティとして利用 } 参照側(利用する方)は、import ReflView; と書いて var myClass:RefView = new ReflView(); trace("bbの値= "+myClass.bb);としました。 プレビューすると発行したSWFに対して「RefView.swf には無効なデータが含まれています。」 というエラーが出ます。 本やWebを参照して書いたのですが原因が分かりません。何かヒント下さい。
>>408 とりあえず参照側でクラス名間違ってるけど、そこは実際のプログラムでは正しいとして
まずアクセサメソッド抜きで問題ないかやってみたら?
410 :
408 :2011/01/05(水) 19:36:48 ID:kXx0OHG0
(追記) エラーの箇所は at Script_03()//import ReflView;を書いたASファイル at RefView() となっています。ちなみに、 var myClass:RefView = new ReflView(); trace("bbの値= "+myClass.bb); を消すと(本来の「参照する」という目的とは違いますが)エラーは出ません。
>>409 早速のレス有難うございます。
アクセサメソッド抜きでやってみたところ、状況は同じでした。
あと、RefViewクラスではsuper(0,0,true,true)で初期化していますが
これを外しても同じでした。
アクセサメソッド抜きで同じなら、他が分からんと答えようないな まぁコンストラクタで発生してるようだからその辺に問題があるんだろうけど
413 :
Now_loading...774KB :2011/01/06(木) 23:34:22 ID:4Nv3d6BL
414 :
Now_loading...774KB :2011/01/07(金) 17:50:09 ID:JeuF8Z5x
415 :
413 :2011/01/07(金) 20:27:57 ID:ZTrgrrPI
>>414 感謝します! 試してみます!
って、最初のリンクは中国語?
>415 ええ まあ 一応中国人なので(笑)
417 :
Now_loading...774KB :2011/01/09(日) 06:56:53 ID:hmZn4ijp
418 :
Now_loading...774KB :2011/01/09(日) 11:00:32 ID:kFvODlrm
>>417 ムービークリップ.hitTest(x座標 , y座標, true);
としたらどうでしょう?
419 :
Now_loading...774KB :2011/01/09(日) 11:12:01 ID:kFvODlrm
Flash CS5です。 TextFieldで文字を表示する際に、 文字の一部が欠けて表示されてしまいます。 フォントによってはきちんと表示されるのですが……。 format.size = 30; format.color = 0x000000; format.font = "小塚ゴシック Pro"; field.type = TextFieldType.DYNAMIC; field.border = false; field.selectable = false; field.autoSize = TextFieldAutoSize.CENTER; field.defaultTextFormat = format; //field.textに値を入れる前にすべき field.embedFonts = true; field.antiAliasType = AntiAliasType.ADVANCED; field.background = false; field.backgroundColor = backgroundColor; field.text = char; field.x = -field.width / 2 + fixX; field.y = -field.height / 2 + fixY; addChild(field); どなたか、解決方法をお知りの方、よろしくお願いします。
420 :
Now_loading...774KB :2011/01/09(日) 13:06:48 ID:hmZn4ijp
>>420 一番手っ取り早い方法:
CS4とかで空のASファイルを作る → 上のソースを丸ごとコピペしてSocketEx.asと名付ける
→ Flaファイルのプロパティのクラス(ドキュメントクラス)をSocketExとして保存。
→ プレビュー
※Java側の設定は分からん。
タイムラインに書く時にはpackageとかprivateとかは不要。
>>421 動きました!!
とても丁寧にありがとうございました
423 :
Now_loading...774KB :2011/01/09(日) 22:07:58 ID:uuJ13FQQ
>>423 ActionScript 3.0 パーティクル 文字
で検索
AS3.0 FlashCS4です。 ステージ上に外部swfファイルを呼び出し、再生した後、 コンテンツ内のボタンをクリックすると一つ前フレームに戻るようにしています。 しかしフレームを移動してもswfファイルがステージに残ってしまいます。 フレーム移動した際にステージにswfファイルを残さない(見えなくする)方法があったら教えて頂けると嬉しいです。 よろしくお願いします。
426 :
Now_loading...774KB :2011/01/10(月) 16:27:31 ID:xmS3NFb6
AS3.0 FlashCS5です。 行き詰まってしまいこちらへ質問に来ました。 フルフラッシュサイトを作っていて、コンテンツ1にAS3で作った時計を置いています。 (コンテンツはフレームでラベルを設定して分けています。) 私としては時計をコンテンツ1でのみ表示させたいのですが、 コンテンツ2やコンテンツ3など下層ページでも同じ場所に表示されてしまい困っています。 時計をコンテンツ1のみで表示されるようにするにはどうしたらいいでしょうか? おしえてください!宜しくお願いいたします。
>>425 , 426
他のフレームに移動する際、消したいオブジェクトのvisibleをfalseにするとか
removeChildするとか
428 :
Now_loading...774KB :2011/01/10(月) 17:13:21 ID:xmS3NFb6
>>427 おかげさまでできました!
ご親切にありがとうございます。
429 :
Now_loading...774KB :2011/01/10(月) 17:29:19 ID:xmS3NFb6
↑すいません、426です。
>>427 425です。
removeChildで解決しました。
ありがとうございました!
431 :
Now_loading...774KB :2011/01/10(月) 22:56:42 ID:VL4sJjE9
失礼します。 オリジナルクラスのオブジェクトを引数にして、 別のクラスで使用したいのですが、うまくいきません。 配列でいうところの「深いコピー(ディープコピー)」をしてしまっている のではないかという疑問があるのですが、 Sprite型のオブジェクトを継承したオリジナルのクラスでも そういうことは起こるのでしょうか? 以下のようなことをしたのですが、うまくいきません……。 Main.as------------------------------------------------------------ var baseObject:クラス■ = new クラス■(引数, ...); addChild(baseObject); var copyObject:クラス★ = new クラス★(baseObject, 引数, ...); addChild(copyObject); クラス★.as コンストラクタ---------------------------------------- function クラス★(inObject:クラス■, 引数:型, ...):void { var baseObject2:クラス■ = inObject; addChild(baseObject2); . . .
クラス★でaddChildしたらMainの子じゃなくなるから そのせいで思い通りに動いてないんじゃないかな?
うまくいかない時はうまくいかない、じゃなくて具体的にどうなってるのか書くべき。 エラーならエラー文書くとか、オブジェクトが表示されないとか、形がおかしいとか。
434 :
431 :2011/01/10(月) 23:51:12 ID:VL4sJjE9
>>432 ありがとうございます!
「思い通りに」という点について、補足しておきます。
こちらの望みは、
もともとのMain.asのbaseObjectはそのまま画面に表示されたまま
新たにクラス★.asのbaseObject2が描画されて、
例えばbaseObject2をドラック&ドロップしたり、回転させたり、拡大縮小したりしても
元のbaseObjectには何も影響がないような状態にすることです。
配列の場合、
【1】array = inArray; //深いコピー(arrayの変更がinArrayに反映される)
【2】array = inArray.concat( ); //浅いコピー(arrayの変更がinArrayに反映されない)
というのがあるようなので、
SpriteやMovieClipを継承したクラスでも【2】のようなことをしたいです。
ちなみに一応クラス★でaddChildの記述を外してみましたが、
イベントの処理が一切反映されなくなりました……。
435 :
Now_loading...774KB :2011/01/10(月) 23:52:59 ID:xmS3NFb6
AS3.0
FlashCS5
ド素人です。
むちゃくちゃな文字列から一文字ずつ表示したいテキストに変わっていくアニメーション
ttp://as3dosue.g.hatena.ne.jp/charzac/20081113/1226561687 このページにあるアクションを使いたくて、書いてある通り作ってみたのですが、
ド素人を抜け出せず、展開方法がわからなくて困っています。
FlowText.flaのドキュメントクラスにmyAS.Mainを指定して動いたのですが、
FlowText.flaのステージ上に1つの文章しか表示できないでいます。
もしも通常のテキストのように、異なる文章を複数表示したい場合、
フレームごとに指定して配置したい場合、どうすればいいでしょうか。
教えてください!宜しくお願いいたします。
436 :
431 :2011/01/10(月) 23:58:12 ID:VL4sJjE9
>>433 どうもです!
「うまくいかない」というのは、
「コピー元のオブジェクトから新たなオブジェクトを複製したいのに、
画面上には1つのオブジェクトしか表示されない」
ということです。
言葉が足らず、申し訳ありません……。
>>434 >>431 のコードじゃbaseObjectとbaseObject2は同じインスタンスを参照することになる
■クラスに■クラスの新しいインスタンスを作って返すclone()メソッドを実装して★クラスの引数にbaseObject.clone()を渡すといいと思う
値型と参照型の違いがわかってない?
深いコピーと浅いコピーの理解が逆な気がするが・・・ concatも配列の中身が参照型の場合深いコピーとは言えないが
439 :
431 :2011/01/11(火) 00:28:50 ID:Mri8XiK6
>>437 clone()! ……を実装?
クラス■.as-------------------------------------------------------
function clone():クラス■ {
return (値型);
}
値型と参照型は……、前者が実際の値で、後者がメモリ上の位置ですよね?
参照型ではなくて値型をreturnに入れるにはどうしたら……?
重ねての質問すみません……。
>>438 あれ、そうなんですか?
とりあえず「値型と参照型」、「深いコピーと浅いコピー」というキーワードで
検索かけてみます。
どうもです!
441 :
Now_loading...774KB :2011/01/11(火) 01:37:07 ID:npAsTEt0
>> 439 例えばこんな感じ クラス内で自身のインスタンスを作成。 プロパティを引き継いで返す。 プロパティの設定をいちいち書くのがいやなら descrbeType とか見てみるといい。 クラス■.as------------------------------------------------------- private var _hikisuu:String; public function クラス■(hikisuu:String):void { _hikisuu = hikisuu } // インスタンスの複製を返すメソッド public function clone():クラス■ { var obj:クラス■ = new クラス■(_hikisuu); // ex. obj.x = this.x; obj.y = this.y; obj.alpha = this.alpha; return obj; }
442 :
431 :2011/01/11(火) 01:41:47 ID:Mri8XiK6
>>440 どうもです。
一応、調べてやってみたのですが、エラーが出ます……。
Main.as------------------------------------------------------------
var baseObject:クラス■ = new クラス■(引数, ...);
addChild(baseObject);
var copyObject:クラス★ = new クラス★(baseObject.clone() as Base, 引数, ...);
addChild(copyObject);
クラス■.as-------------------------------------------------------
function clone():* {
var buffer:ByteArray = new ByteArray();
buffer.writeObject(this);
buffer.position = 0;
return(buffer.readObject());
}
エラーは
「Error #2007: パラメータ child は null 以外でなければなりません。」
です。
443 :
Now_loading...774KB :2011/01/11(火) 14:00:03 ID:npAsTEt0
>>442 Sprite や MovieClip インスタンスをまるまる複製するのをイメージしてるのかもしれないけどそれはできない。
ByteArray.readObject() はどんなオブジェクトでも復元できるってわけじゃない。
今考えてる方法は一旦捨てたほうがいい。
オブジェクトの複製が設定可能な値を引き継ぐということなら
>>441 のように clone メソッドで引数やプロパティを引き継ぐ。
もしグラフィックの描画など後から設定を引き継げないようなものまで複製したいと考えているならその仕組みをイチから考えないといけない。
as3で質問です。graphicオブジェクトを操作し、透明部分を描画したいと思ってます。 こんなソースで試してみました。 // 背景を黄色にする graphics.beginFill(0xffff00); graphics.drawRect(0, 0, 300, 300); graphics.endFill(); var sp:Sprite = new Sprite; // 大きな赤の円を描く sp.graphics.beginFill(0xff0000); sp.graphics.drawCircle(100, 100, 50); sp.graphics.endFill(); // 赤の円の中心部分を透明色でくりぬき、ドーナツにしたい sp.graphics.beginFill(0x000000, 0.0); // 黒をアルファ0.0で描画するという意味なので何も表示されない // sp.graphics.beginFill(透明を示すパラメータ); // この行で何かを指定して透明色そのもので描画したい! sp.graphics.drawCircle(100, 100, 30); sp.graphics.endFill(); addChild(sp); これから描画する物のアルファではなく、現在描かれている物のアルファ値を変更するような指定方法はない でしょうか。別のDisplayObjectをマスクに利用する方法は知っていますが、ひとつの graphics オブジェクト で完結できる方法を探しています。上のコードはUI上では「大小の円を描き、小さい方の円を選択してDEL」 で出来る事なので、AS3でも何か方法があるんじゃないかと思っているのですが、ないでしょうか。 よろしくお願いします。
>>444 blendmodeでググると色々と使えそうなのが出てくると思うよ
446 :
444 :2011/01/12(水) 00:08:59 ID:TfsIqQUX
>>445 レスありがとうございます。他のオブジェクトとの合成の結果ではなく、
ひとつのgraphicsオブジェクトだけで完結するようなやり方はないでしょうか。
>>446 「ActionScript 円弧」でググるといいかも
448 :
431 :2011/01/12(水) 19:24:17 ID:iRYfKh8X
>>441 返事おくれてすみません。
簡単なやつなら、それを参考にしてみます!
>>443 なるほど……
残念ですが、わかりました。
作り直してみます。
ありがとうございました。
449 :
sage :2011/01/13(木) 01:15:22 ID:PfiXud/c
AS3のFLVPlayBackのシークバーに関して質問します。 シークバーにて動画終端のイベントが取得出来ないというのが問題です。 FlashコンポーネントのSeekBarを使用しており、 このつまみをつかんだ状態で(スクラブ状態)、つまみを右端に持っていくと 動画再生完了のCOMPLETEイベントが発生すると思っていたのですが 動画によってこのCOMPLETEイベントが発生する動画と発生しない 動画が出てしまいました。 動画側の問題なのか、FLVPlayBack側の問題なのかの切り分けがつかず悩んでいます。 些細な情報でもけっこうですのでどなたか何かご存知ないでしょうか。 使用している動画はMP4とFLVです。
450 :
Now_loading...774KB :2011/01/13(木) 15:56:09 ID:GkQfXP4I
addEventListener これの読み方教えてください あどど?
451 :
Now_loading...774KB :2011/01/13(木) 15:57:33 ID:GkQfXP4I
あどどで半音上げてイベントりすなーで下げるであってますか?
ほんきでいってるのか。 add Event Listener 区切って辞書で調べろ。
あどど って読んじゃうよねーw 心の中で読んじゃう
読まないよ
>>449 詳しくはないですが、
動画によってというのは、
長い動画だとイベントが発生しにくいとか、
同じ動画でも発生するときしないときがある
ということはありますか?
だとしたらシークバーの「現在の再生位置」を
最後まで持っていけてないのだと思うのですが……。
>>450 「あっどいべんとりすなー」
ですよね?
AS3、FlashDevelopとAdobe Flash CS5で試しました。 の文字についてです。 内で、文字上に詰まりすぎいるため下に調整したいです。 (1)テキストボックス内で、文字の表示する縦方向の位置を調整する仕組み (2)leftMargin、rightMarginのように、縦方向の余白を調整する仕組み (3)その他 のいずれかはあるでしょうか? よろしくお願いします。
>>456 公式リファレンスガイドのTextFormatとか見れば?
年が変ってCS5の質問が増えたな。 って、俺も一昨日CS4→CS5にしたがw
>>450 YouTubeとかで適当なチュートリアル動画見れば、ネイティブの発音で嫌というほど聞けるよ
460 :
456 :2011/01/14(金) 03:02:53 ID:EVFrIKXi
>>457 TextFieldとTextFormatのリファレンスを改めて確認しました。
例えばleadingで値を指定すると確かに縦方向に余白はできるのですが、
境界ボックスは下にしか広がらず、余白が変化しない上の方で文字は切れたままで、
その他にも、とりあえず縦方向の余白に関係しそうなものを
ダメ元で手当り次第にあたったつもりですが
scrollV、heightなどをいじっても、やはり変化はありませんでした……。
461 :
Now_loading...774KB :2011/01/15(土) 01:53:18 ID:Vi9nmAZe
FlashBuilderでFlashのコンポーネントを使いたいのですがどうすればいいですか?
462 :
Now_loading...774KB :2011/01/15(土) 04:08:19 ID:P5dnT5B4
>>461 swcにしてインポートすればいいんじゃないかな。
FlashCS*で使える一部のライブラリはFlashBuilderでは使えなかったりするね。easingのやつとか。 これを合法的に使うには、CSをインストールするしかない。
464 :
Now_loading...774KB :2011/01/15(土) 11:56:18 ID:Vi9nmAZe
>>462 Adobe Flash CS5\Common\Configuration\Components\User Interface
のswcをFlashBuilderでインポートしようとしても読み込めませんって出るんですが…
>>463 使えないのですか…
FlashBuilder使用者向けに他に何かコンポーネントがあるんでしょうか?
465 :
Now_loading...774KB :2011/01/15(土) 19:51:35 ID:7HxEcuzb
選択範囲を指定して、その領域の描画を切り取りたいのですが、 ビットマップにしないと無理でしょうか?
466 :
Now_loading...774KB :2011/01/15(土) 22:13:57 ID:7HxEcuzb
再投下 as.3.0の質問です。 お絵描きアプリを作っていて、spriteに描いたshape/spriteを、 矩形で選択した範囲で切り取りコピーや削除がしたいのですが。 spriteに描画する時点で全てをビットマップにしないと無理でしょうか?
467 :
そら :2011/01/15(土) 22:28:15 ID:Ai8Y3vdt
私はFlash初心者です。 今、CS5のFlashのソフトを使い、Actionscript3.0を利用してFlash動画を作っているのですが、 Actonscript3.0で命令をしたところコンパイルエラーが出てしまい困っております(汗) 詳しいエラー内容は・・・1086:シンタックスエラー:leftbraceの前にセミコロンが必要です。 というものです。 そしてエラーが出てしまったアクションの命令文は以下の通りです。 on(rollOver) { gotoAndStop(2); } ロールオーバー時に2フレーム目に行ってそこで止まっててね・・・という命令なのですが。 この命令文でActionscript2.0ではエラーもなく正常にいったのですが、3.0ですとエラーになってしまいます。 3.0での正しい記述の仕方がわかる方、いましたら教えて下さい。 ちなみに私は今、作成中の動画はActionscript3.0を使っているのですが、途中で2.0に変更することなんてできないでしょうか? その方法がありましたら教えてほしいです。 どうぞよろしくお願いしますm(_ _)m
468 :
そら :2011/01/16(日) 01:31:49 ID:pBtFnQv+
すいません、467は解決しました。 ですが、またあらたに質問が・・・すいません。。。 actionscript3.0 CS5を使っているのですが、 タイムライン制御で質問です。 stop();で再生を停止させられると思いますが、 下記の状態でレイヤー2だけを個別に停止させることとかも可能でしょうか? レイヤー1(マスク)1〜10フレーム(ずっとループ再生させていたい。) レイヤー2(マスクの対象)1〜10フレーム(10フレーム目で停止させたい。) こんな感じなのですが、、、 おそらくマスクは再生させたまま、そのマスクの対象だけ停止させるのは 無理ですよね〜(汗) ただ、イイ案などあれば、意見ほしいです。 よろしくおねがいします。 自分も実験しつつ、なにかイイ案がないか考えてみます。
>>468 レイヤー2の内容を別のムービークリップに移して、それをレイヤー2に置くとかでできないかな
470 :
464 :2011/01/16(日) 02:21:24 ID:09YElf67
自己解決しまいま
471 :
Now_loading...774KB :2011/01/17(月) 01:49:52 ID:bDXv249m
3.0 CS4を使ってます。 コンテナに表示オブジェクトを入れた後に、同じ領域にコンテナ(Sprite)をnewすると下位層の表示オブジェクトが消えてしまいます。 これを防ぐ方法はないでしょうか? コンテナの背景色だけ透明にできないのでしょうか。
472 :
Now_loading...774KB :2011/01/17(月) 02:41:33 ID:Sc2ut3HP
473 :
Now_loading...774KB :2011/01/17(月) 02:46:14 ID:Sc2ut3HP
flashとCGIの何がわからないのかを書かないと回答はこないでしょ。 flashとCGIのどちらも知っててその連携方法がわからないのか、どちらもわからないかで対応が変わると思うよ。
475 :
Now_loading...774KB :2011/01/17(月) 14:04:32 ID:Sc2ut3HP
476 :
Now_loading...774KB :2011/01/17(月) 14:37:29 ID:NyoQ/mrr
要はプロパティをたくさん集めた房を作って(バナナの房みたいなもん)、サーバーとやり取りするわけだよ。 この概念が判ればあとは簡単 つーかCGIは難しいからPHP覚えた方がいいぞ。PHPなら数ヶ月で習得できる
477 :
Now_loading...774KB :2011/01/17(月) 14:43:39 ID:Sc2ut3HP
httpdの中身変更しようとしてもファイルが上書き保存できないんです・・・アクセスが拒否されましたって出る これ解決する方法はないですか?
CGIは仕組みなんだから、その言い方はおかしくね? PHPがPerlとかより簡単てならわかるけど
479 :
Now_loading...774KB :2011/01/17(月) 16:29:05 ID:Sc2ut3HP
httpdの問題はなんとか解決できました>< あとは 「webサイトによってこのページの表示を拒否されました」と出て、CGIが開きません。 いろいろ調べてみて、パーミッションの設定とかが1番それっぽい原因かなとは思ったのですが、 あれってFTPで変更するものですよね? アップロードする気がなくて、これからも自宅サーバで使用したい場合でも、 パーミッションの設定は必要なのでしょうか。その場合、どうやれば設定変更できるのでしょうか? あれってアップロードしたファイルを設定変更するものですよね・・・(私は普段FFFTPを使用しています) アップロードしてないファイルはどうすればいいのでしょうか・・・。
どうやってそのファイルを作ったのかが気になるが、 サーバがlinuxならchmodで変更しろ。
481 :
Now_loading...774KB :2011/01/17(月) 16:47:01 ID:Sc2ut3HP
FlashもCGIもサーバにアップして試してるんじゃないのか? それとも自鯖なの? 状況がよくわからないんだが
483 :
Now_loading...774KB :2011/01/17(月) 16:57:36 ID:Sc2ut3HP
どちらも自宅サーバにアップして試してます 自宅サーバのみで使用するつもりなので、パーミッションの設定とかが問題な わけでもないかと思ったのですが、違うのでしょうか・・
サーバーのパーミッションとかならflash以前の問題なので、該当スレで解決するべき。
flashで試行錯誤できる段階になってから、またここに来たほうが
>>483 のためだと思うんだが……。
486 :
Now_loading...774KB :2011/01/18(火) 02:25:01 ID:nOJYccCy
すみませんパーミッションの問題とかは解決できました!
ただのパス記述ミスだったみたいです;
それで、
http://1art.jp/flash/le/lesson43/lesson43.htm こちらのサンプルなども問題なく動作するようになり、
自分のswfファイルも試してみました。
現段階では
swf上で登録した名前と、算出したスコアをCGI側に送信・表示するように
したいのですが、
スコアは表示されるのですが名前が表示されません。
スコアは var name; としてflashで定義し、
途中で結果のスコアを値を代入しています。
名前は var Name:String = textBox.text; とし、
テキストボックスに表示された
(正しくはflashファイル上に名前入力画面があり、
テキストボックスで登録された名前を表示しています)
名前を文字列として格納しているつもりです。
わかりにくい説明で申し訳ないのですが、
おかしいところをご指摘いただけると助かります;
487 :
Now_loading...774KB :2011/01/18(火) 02:56:34 ID:nOJYccCy
なんかこんなに長々書いておいて申し訳ないんですができました; どうやらswfを更新しても、localhostで反映されるまでに時間がかかっていたみたいです…。 何度作りなおしてもCGIページが変わらないので調べてみたら、こんな不具合があるんですね…。 上書きしたswfファイルがすぐにサーバー上で反映される方法ってないのでしょうか(´・ω・`)
キャッシュ読んでるとかいう古典的な現象ではなくて?
489 :
Now_loading...774KB :2011/01/18(火) 04:50:57 ID:nOJYccCy
>キャッシュってyahooとかで検索したときに出たやつを押して表示されるあれとは違うんですか? swfファイル上書きするたびにブラウザもF5でリロードしてるんですけど それではだめなのでしょうか?
>>487 URLに、?date=1234とか適当な文字列を毎回変える
492 :
Now_loading...774KB :2011/01/18(火) 19:57:09 ID:nOJYccCy
とりあえずリロードの際にいろいろ気をつけてみます; それで、スコアランキングを作りたいので、 とりあえずCGIに送信・保存したデータを降順ソートしたいのですが、 このソートはCGI側・FLASH側どちらでやるべきなんでしょうか?
CGI側でソートして必要な件数だけ渡す。flashで降順にソートする場合、 例えば上から10件分のデータだけが欲しい場合でも全てのデータを受信しなければソートできないから効率が悪い。
494 :
Now_loading...774KB :2011/01/19(水) 00:28:41 ID:yMsy9Hjq
なんとかランキングで降順ソートまでできました! 次はいよいよflash側でランキングを表示させたいのですが、 現段階では、 CGI側で降順ソートをして、とりあえず確認のために そのままCGI側でランキングを表示させています。 これからFLASH側で表示させるなら、CGIでの表示はいらないので、 非表示にしたいのですが・・・。 今はFLASHでgetURLを使っているので、CGIページが出てしまうのだと認識しています。 FLASHからCGI側にデータを送ったうえで、CGIページの表示はさせたくないのですが、 この場合どうすればいいのでしょうか? getURL以外に何かありますでしょうか・・・ 説明下手ですみません;
495 :
Now_loading...774KB :2011/01/19(水) 00:30:57 ID:yMsy9Hjq
AS3をFlashDevelopで今日はじめたばかりのものです。 1)文字の色が反映されません。なぜでしょうか? 2)TextFieldの内容を選択不可にしたいのですがオプションはありますでしょうか? 3)addChild()すると位置が右にだんだんずれていく気がするのですが 基点のような概念があるんでしょうか? var format:TextFormat = new TextFormat(); format.size = 16; format.bold = true; format.color = 0x440000; format.align = "center"; txt = new TextField(); txt.x = -50; txt.y = 0; txt.defaultTextFormat = format; txt.text = "text"; txt.autoSize = TextFieldAutoSize.CENTER; addChild(txt);
どこをクリックしてもdoClick()を呼ばせたいのですが、 クリックイベントが取得できません。。。 TextFieldを作ってaddEventListener()させるとうまくいきましたが どこをクリックしても反応するようにしたいです。 public class test_swf extends Sprite { : : private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point this.addEventListener(MouseEvent.CLICK, this.doClick);
499 :
Now_loading...774KB :2011/01/19(水) 02:11:58 ID:QDoeg5nE
FlashDevelop、AS3、PHP、MySQLで学習目的の開発をしています。 AS3からMySQL内のデータを扱いたく、間にPHPを入れているのですが、 AS3、PHP間の通信を1クラスにしようとしたところでつまっています。 処理をクラス分けせずに、Main.asの中に全て書いたものは動かせています。 AS3、PHP間の通信はネットで調べた、 URLLoaderを使ってPOSTでデータをわたすものです。 PHPからの戻りについては現在はURLVariablesですが、 XMLを返すものに変更する予定です。 本文が長すぎるそうなのでここで一旦投稿させていただきます。
>>497 1) 私もFlashDevelopですがコピーして実行したら反映されました
2) TextField.selectableをfalse 3) 親要素の左上が起点
>>498 stage..addEventListener(MouseEvent.CLICK, this.doClick);
501 :
497 :2011/01/19(水) 02:32:03 ID:okOOr0oc
もう一度やったらうまくいきまいした。ありがとうございます!
502 :
Now_loading...774KB :2011/01/19(水) 02:34:50 ID:yMsy9Hjq
>496 できました! ありがとうございます>< あと、cgiページをhtmlにすることってできますでしょうか。 cgiだとリロードしたとき再試行しなきゃいけないんで、 ランキング表示ページをhtmlで作りたいのです。
マウスカーソルを、アンカーに乗せたときのように 指のカーソルにしたいのですがうまくいきません。 public class test extends Sprite { public function test():void { this.buttonMode = true; this.useHandCursor = true; this.mouseEnabled = true;
504 :
Now_loading...774KB :2011/01/19(水) 06:24:43 ID:azBgtxRW
問題のクラス分けですが、 ・PHPに送信する任意数のデータとPHPのURLを引数に ・PHPからわたされた変数(あるいはXML)を戻り値とする ものをつくりたいと考えています。 現在PHPからの受け取りを、 URLLoaderのCOMPLETEイベントで処理しているのですが、 URLLoader.load実行後、COMPLETEイベント発生前に、 次の行のReturnを実行してしまいます。 ならばReturn前に戻り値用変数に値が入るまでループさせれば、 と考えたのですが、ループ中はCOMPLETEイベントが発生しないようで、 無限ループとなりました。 ループ中に他言語のwaitやsleepのようなものを入れれば、 と考えたのですが、ASにはそういったものは無いらしいです。 これは今回の環境において実現可能なものなのでしょうか?
505 :
Now_loading...774KB :2011/01/19(水) 13:26:12 ID:mwditgUF
>>504 言語とか環境が無いから推測だけど AS3 かな?
他の言語にあるような wait 命令に直接当たるような物は AS3 にはありません。
このような場合は読み込むクラス (仮に CGISender クラス) を別途用意すればいい。
具体的に CGISender は EventDispatcher を継承し、
そして、sender.send({param1:"hoge"}, callBackFunction); という感じに送信出来るようにし、
CGISender 内の URLLoader の Event.COMPLETE イベントを処理する関数で callBack を呼び出せばいい。
その時に引数に受信したデータを渡せば大丈夫かな。
506 :
503 :2011/01/19(水) 19:16:00 ID:okOOr0oc
ちなみにFlashDevelop、AS3です。
>>505 499からの続きでした。
間が空いて読みにくくなり申し訳ありません。
EventDispatcherがキーワードだったようですね。
ご提示いただいた方法とは少し違うのかもしれませんが、
COMPLETEイベント内で自作のイベントを発生させることで、
目的のクラスを分離させることができました。
アドバイスありがとうございました。
508 :
503 :2011/01/20(木) 17:30:03 ID:rXNqyk0K
マウスカーソルの件、まだ解決しません。 どなたかアドバイスお願いできませんか。。。
>>508 >1みてちゃんと書けば答えてくれるかも。
情報惜しまずかけって。
510 :
Now_loading...774KB :2011/01/20(木) 21:20:59 ID:4Bm31kyk
環境: FlashCS4,AS3,Player10 入れ子MCにaddChlidしたMC(名前はendM)のボタンモードが有効にならない上に、 親が参照できず困っています。 endMはmc0.mc1.mc2の子です。endMのタイムラインにボタンモードとして buttonMode=true; 親確認用に trace("親は: "+parent); と書きました。 通常 addChlid すると 親は: 〜 と表示されるのですが何も出ません(エラーも出ません)。 おかしいと思い、addChlidではなくオーサリングでmc0.mc1.mc2の下に置いたところ、 問題なくボタンモードが有効かつ親が参照できました。 子として表示はされていますが、MCとして機能していない状態です。 考えられる原因は何でしょうか? ※作業の都合上、同じPC内にFlashCS5も載せています。
AS3、FlashDevelopです。 "hoge.swf?param=日本語" の形で実行するFlashを作成予定です。 (実際はURLエンコードすると思います) ブラウザやサーバの環境によって文字コードが変わると思うのですが、 どのように判別、変換すればよいでしょうか?
>>510 mc0からmc2までの、mouseEnabledがfalseになっているか
endMのmouseEnabledがtrueになっているか確認
trace()の件に関しては、それだけの情報ではわからん
514 :
513 :2011/01/21(金) 01:35:57 ID:WASDzn+m
環境はFlashCS3、AS3です。
515 :
510 :2011/01/21(金) 03:51:02 ID:gVoX+cS6
>>512 さんきゅうです。
見直しましたが、「mc0からmc2までの、mouseEnabled」と「endMのmouseEnabled」
に該当する記述は見つかりませんでした。
そこで実験的に、子であるendMのタイムライン(フレームアクション)に var theNum:int = 100;
とだけ書いて、この親(mc2)で endM.buttonMode=true; としたら指マークが出ました。
また同じく親側にてendM.addEventListenerして、クリックした時
trace("マウスイベントと親= "+mouseEvt.target+", "+parent);を実行するようにしたところ
正しくターゲットと親が取得できました。
しかし、この親(mc2)からendM.theNumを取得するとゼロになり、MCとして役目を果たして
いません。また、endMは2個のフレームを持っていて1フレ目でstop();をしているにも関わらず
勝手に2フレ目に移動しています。
まとめますと、
@ addChlid対象のMCのフレームアクションは無効。
A 親からの記述は実行できる。
平たく書くと、上官からの命令は聞くが部下本人は全然自発的に行動しなかったり、自分で立てた
規範を無視する状態です。
どなたかこんな症状は現れましたか?
516 :
Now_loading...774KB :2011/01/21(金) 09:42:15 ID:qmN5rqqU
flash8からアップデートしていない者ですが、質問させてください。 オーサリング時に行う、ビットマップ→トレースを動的に行いたいのですが、 CS5ではビットマップ画像をベクター化するメソッドが存在するでしょうか? bitmapDataと逆の機能にあたるメソッドです
517 :
Now_loading...774KB :2011/01/21(金) 10:16:13 ID:i7C0NJPX
スレ違いだったらすんません。 FlexBuilder3を買ったとたんに FlashBuilder4が出ちゃって ちょっと存した気分になったんですが、 FlashBuilderの次版がでるのはいつ頃と 目論んでおけばよいでしょうか?
>>515 環境もかなり枯れて来ているから、
システムのバグとかではないのは間違い無かろう。
断片的でわからんから、サンプルプロジェクトなりファイルなりを
アップロードしたほうがいいんじゃない?
>>515 記述が見つからない、のではなく、それらはプロパティなので
traceで値を確認することができるはず
おそらくは、フレームアクションが無効なのではなく
確認する時点で値が0になるような作りになっているだけだと思われる
実行のタイミングなどをひとつひとつ追って、どのタイミングで
どこで何が実行されているのかを確認すれば解決するはず
それからaddChildなどを使う場合は、フレームアクションとの併用はおすすめしない
たとえば、addChildされるMCは、フレームアクションでstop()するのではなく
クラスのコンストラクタ内でstopする必要がある
他にもフレームアクションを取り入れているなら、それが思った通りの動作にならない原因の
可能性もある
これ以上は、Flaの具体的な作りなど見ないとちょっとわからない
520 :
Now_loading...774KB :2011/01/21(金) 18:21:04 ID:dhmN66NZ
クッキーを取得して、以前使ったことがあれば名前入力欄に事前に名前が表示されてる、 っていうのをやりたいんですけど、 これについて説明してくれてるところとかありますか? 探したけどうまく見つけられません;
522 :
Now_loading...774KB :2011/01/21(金) 18:40:20 ID:dhmN66NZ
>>521 これは便利ですね!ありがとうございます!
523 :
Now_loading...774KB :2011/01/21(金) 19:47:15 ID:dhmN66NZ
>>ちなみにこれって、使用したパソコンの電源一度落とした後でも有効なんでしょうか?
使用可能。 もう少ししらべればわかるだろうに。
http://level0.kayac.com/2009/12/to_fresh_flasher_1.php?utm_source=twitterfeed&utm_medium=twitter このURLのサイトに記載されている、ページャー機能というものを実装してみたいのですが
なかなかうまくいきません。
*入りきらないため重要な部分意外は省略しています
private var _textfield:TextField;
public function set data(value:MenuData) :void{
_menuData = value;
_menuData.addEventListener(Event.CHANGE, onUpdate); //ページ保存変数が変動すると動く
}
public function Control(view:DoubleView, view2:DoubleView,value:MenuData) {
next_button = new PageButton(new R_BUTTON(),new R_BUTTON()); //次へ
back_button = new PageButton(new L_BUTTON(), new L_BUTTON()); //前へ
}
private function nextView(event:MouseEvent):void {_menuData._pageNum += 1;//別クラスに保存してあるページ数保存変数に格納している}
private function backView(event:MouseEvent):void {_menuData_pageNum -= 1;//上と同じ}
private function onUpdate(event:Event = null):void { //dispatchEventを使って、ページ保存変数が変動したとき動くようにした関数
if (_menuData.pageNum == 1) {removeChild(_textfield);}
else if (_menuData.pageNum == 2) { addChild(_textfield);}
else if (_menuData.pageNum == 3) { removeChild(_textfield);}
}
このように作ろうと考えているのですが、back_buttonを押したときに_textfieldをリムーブしなければならないのですが
このやり方だと最初はaddChildしていないのでページ1でremoveChildするとエラーが出てしまいます。
何か方法はないでしょうか。
それともこういったページャー機能を作るさいにはもっとまったく別の組み方を考えなければいけないでしょうか。
>>525 とりあえずcontainsでaddChildされてるか調べて、されてたらremoveすれば?
>>519 さんきゅうです。
「mc0からmc2までの、mouseEnabled」と「endMのmouseEnabled」をtraceで確認
したところ全部Trueでした。
>>それからaddChildなどを使う場合は、フレームアクションとの併用はおすすめしない
もっと根本的な問題(というかほぼ確定的)なのは、ある子孫以降にMCをaddChild
すると、そのMCの1フレ目が無視されるということが判明しました。
つまりゼロをステージとすると4段目(4世代目)の子は2フレ目から開始されるということ
になります。これは、addChlid対象のMC(名前はendM)とは別に実験的にフレームを2個持つ
MC0を用意し、これをaddChildした実験で確かめました。
MC0もやはり勝手に(stopを入れていても)2フレ目に移動するので、意図的にダミーの
(絵柄のみの)フレームを1フレ目に置き、2フレ目に本来のASを書いたたところ正しく
マウスイベントが取得できました。
以前、「フレームアクションの1フレーム目は鬼門だから気を付けるべし」という記述が
Webにあったので、もしかするとこのトラブルのことを指しているのかも知れません。
>>527 まず、mc0からmc2までの、mouseEnabledをすべてfalseにする
mouseEnabledの詳細については、ヘルプとか見てください
1フレーム目にはいろいろと難しい点があるが、「バグ」ではないです
大抵は、アクションの実行順序の問題
たしかMCを動的にnewした段階で、MCのコンストラクタが実行され
それがMCを初期化するので、1フレーム目のstopはなかったことになる、とか
そんなだったはず(違ってたらすまん)
とにかく、フレームアクションは実行のタイミングが遅いので、制御が面倒です
動的にMCを配置したいなら、クラスのコンストラクタ内に最初に必要な処理を書くべき
これで0(true)が出て欲しいのですが-1(false)になってしまいます。 配列に入れたPoint型の比較検索はどうしたらいいのでしょうか? var pt : Point = new Point(0,0); var pt_copy : Point = new Point(0,0); var test_array : Array = new Array; pt.x = 100; pt.y = 100; pt_copy.x = pt.x; pt_copy.y = pt.y; test_array.length = 0; test_array.push(pt); trace(test_array.indexOf(pt_copy));
>>529 indexOfは===で比較するから同じオブジェクトじゃないとtrueにならない
forで回してPoint.equal()で比較とかしかないんじゃね?
ていうか、オブジェクトの比較なら==でも同じオブジェクトじゃなきゃtrueにならんな 素直に比較して見つけるしかないんじゃないかな
了解です別の方法でやってみます。 ありがとうございました!
質問です。 シーンの中にmc1とmc2があります。 mc1の中にmc3があります。 そのmc3の中にボタンが設置されていて ボタンを押すとmc2のあるフレーム(ラベル設置)へ飛びたいのですが、うまくできません。 わかる方教えて下さいお願い致します。 ちなみに同じ構成のシーンがいくつかあって、シーンをまたいで同じ条件下で飛ばしたいのですが。
>>533 ・ASのバージョンは何ですか?
・「うまくできない」とは、具体的にどういう状況のことですか?
(例:ボタンを押しても反応しない、別のフレームに飛ぶ、など)
・どこにどのようなスクリプトを記載していますか?
このくらいは書いて
その質問だけだと、情報少なすぎ
ActionScript3.0で、コンポーネントを隠す方法を 教えてください。想定しているフレームワークはFlex3です。 Win32APIならば ShowWindow(SW_HIDE)のようにして 隠せるのですが、AS3には該当するAPIが見当たりません。 仕方ないので、現状は次のいずれかで対応しています。 (1)コンポーネントのAlpha値を0.0にする (2)コンポーネットのwidthとheightを0にする。 よろしくお願いします。
>>534 swishというソフトを使っているため、ASではなく厳密にいうと独自のスクリプトで、
AS2.0の、クラスがないものと考えて頂けたら。。
ボタンには
on(release){
_root.gotoAndPlay("LABEL");
}
と書いてます。
挙動は、まずボタンを押しても飛びません。
>>533 具体的に書くと
シーン1_mc1_ボタン1を押すと
シーン2_mcAのあるラベルから再生
って感じです。
どう記述していいかわかりません。
AS3.0です。 外部ASファイルをインポートして その外部ASファイルからKeyEventを受け取ろうと stage.addEventListnerとしても nullのオブジェクトの参照ではじかれてしまいます。 Flash本体に同様に書けば通るのですが 外部から受け取ろうとする場合はどうすればいいのでしょうか?
>>537 今同じものつくってみたけど、動作したよ
移動先のフレームが読み込まれてないとか、そういう可能性は?
それとも、シーン2にあるラベルじゃなくて、シーン2に配置されている_mcAのなかの
ラベルに飛ぶってこと?
ただ2.0あたりだと、MovieClipがシーンをサポートしていないので
シーンの使用は非推奨だから、できればシーン無しで設計するほうがいいとは思う
>>539 シーンまとめて作ったら解決いたしました!
お騒がせして申し訳無いです。
ありがとうございました。
541 :
Now_loading...774KB :2011/01/24(月) 00:28:40 ID:aBeplfTC
AS2.0です。 あるクラスに、自作クラスを利用して、いくつかクラス変数を宣言・初期化しています。 自作クラスを利用している変数の内容の一部が、最後に宣言・初期化した値に置き換わっ ているようなのですが、原因が分かりません。 class Main{ // 実行部分 exec(){ trace(Constant.TEST1.getStr()); // "BBB"が出力される var i : Number; for(i = 0; i < 3; i++){ trace(Constant.TEST1.getValue(i).toString()); // ※※※12が出力される } } } class Constant{ // クラス変数 public static var VALUE0 : Array = new Array(10, 10, 10); public static var VALUE1 : Array = new Array(11, 11, 11); public static var VALUE2 : Array = new Array(12, 12, 12); // 自作クラス変数 public static var TEST0 : Test = new Test("AAA", VALUE0); public static var TEST1 : Test = new Test("BBB", VALUE1); public static var TEST2 : Test = new Test("CCC", VALUE2); }
542 :
Now_loading...774KB :2011/01/24(月) 00:30:06 ID:aBeplfTC
続きです。 // 自作クラス関数 class Test{ private var str : String; private var value = new Array(0, 0, 0); public function Test(str : String, value : Array){ this.str = str; var i : Number; for(i = 0; i < 3; i++){ this.value[i] = value[i]; } } public function getStr() : String{ return this.str; } public function getValue(i : Number) : Number{ return this.value[i]; } }
544 :
Now_loading...774KB :2011/01/24(月) 15:19:50 ID:e1UytUeZ
お疲れ様です。AS3の質問なんですが、複数の円を描きたいのですがうまく書けません。そして、変数の型宣言が出来てないというエラーが返ってきます。これら2つのエラーについて対処方法を教えてください。お願いします。
http://wonderfl.net/c/1N3i
>>541 class Test{
public var str : String;
public var value = new Array(0, 0, 0);
public function Test(str : String, value : Array){
this.str = str;
/*var i : Number;
for(i = 0; i < 3; i++){
this.value[i] = value[i];
}*/
this.value=value
}
public function getStr() : String{
return this.str;
}
public function getValue(i : Number) : Number{
return this.value[i];
}
}
>>545 解決しました。
ありがとうございました。
よくFlash広告でembedタグの縦横サイズを無視して(?)はみ出すものがありますが、 あれはどうすればできるのでしょうか?
AS3、FlashDevelopです。 swfの領域のどこにマウスを置いても、指マークのカーソルにしたいのですが 下記コードで動いてくれません。 どうすればよいでしょうか? package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point this.buttonMode = true; this.useHandCursor = true; this.mouseEnabled = true; this.mouseChildren = true; } } }
549 :
Now_loading...774KB :2011/01/24(月) 23:17:33 ID:YG5hhZor
それを俺に聞くのか?
550 :
Now_loading...774KB :2011/01/25(火) 00:10:42 ID:VtUOvJp1
>>547 ExternalInterfaceでJavaScriptをコールしてFlashが格納されてる(div)要素のサイズを書き変える
551 :
Now_loading...774KB :2011/01/25(火) 00:44:55 ID:qhQFZ314
>>548 package
{
import flash.display.Sprite;
import flash.events.Event;
[SWF(width="800", height="600",backgroundColor=0x777777, frameRate=30)]
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
this.buttonMode = true;
this.useHandCursor = true;
this.mouseEnabled = true;
this.mouseChildren = true;
var canvas:Sprite = new Sprite();
canvas.graphics.beginFill(0xED1A3D);
canvas.graphics.drawRect(0, 0, 800, 600);
canvas.graphics.endFill();
addChild(canvas);
}
}
}
552 :
Now_loading...774KB :2011/01/25(火) 02:12:58 ID:6hJSqkVW
>>548 stage.buttonMode = true;
で出来ない?
553 :
Now_loading...774KB :2011/01/25(火) 18:01:33 ID:W+eROzVm
ASが関係するのでこのスレで質問させてくださいませ。 7年前までFlashゲームクリエイターをしておりましたが、現在は一般企業に勤めております。 社内でe-ラーニングの導入を検討していたのですが、高価で導入が見送られました。 そこで何とかFlashをベースにe-ラーニングを作成できないものか思案中です。 e-ラーニングのインターフェイスをFlashで作成するとして、 ・ログイン認証 ・データベースに実績をアウトプット をする事になるかと思うのですが、一般的にはどのようなプログラムで固めて行くのが宜しいでしょうか。 ポスグレ+PHP+AS で連携は可能と思われるのですが、 それで本当に可能なのかが知りたいです。 また、既に同じような事をされている方の方法や、どんな些細な情報でも良いので、頂けると嬉しいです。 なにとぞ宜しくお願いします。
>>553 可能。
ASからPHPにHTTPリクエストを送れる。
>>554 返信thxです!
ASからPHPに送受信が出来る事を教えて頂けたので、
後はPHPからDBへの送受信を固めるだけで実装できそうです。
本当にありがとうございました。
>>553 それを質問しないとわからんようでは厳しいと思うんだが。
似たようなシステムはいっぱいあるぞ。
まぁ、需要は内容次第だから、実装には関係ないだろうけど。
ボタンを押すとコマ送りのアニメが動きゲージが減るようなモノを作りたいんですが どうすればいいでしょう? ボタンを押してゲージが減るのは出来るんですが ボタン押す→ゲージ減る→フレーム移動→元の位置に戻る→ゲージも戻る となってしまいます CS5とAS2を使ってます
test
>>558 そこで問題なのは何?
元の位置に戻ること?
ゲージも戻ること?
とりあえず、ゲージとアニメを別々のムービークリップで作って
ゲージMCは最後のフレームにstop()
ボタンを押したら、それぞれのMCをgotoAndPlayさせるのでどう?
560 :
548 :2011/01/27(木) 13:39:05 ID:+xQJlpS5
>>551 ありがとうございます。上記コードでうまくいきました。
ただ、その後にTextFieldなどをaddChildするとうまくいきません。
561 :
548 :2011/01/27(木) 13:53:49 ID:+xQJlpS5
追加で質問ですけど、 >canvas.graphics.drawRect(0, 0, 800, 600); 左上が0,0に指定されているのに、左に50ピクセルくらい(目視)の余白があるのはなぜでしょうか?
562 :
Now_loading...774KB :2011/01/27(木) 20:52:56 ID:GymDGNsE
表示リストって表示できるの?メニューに表示リスト表示するってのが無いんだが
意味が全くわからないんだが
564 :
Now_loading...774KB :2011/01/28(金) 17:28:36 ID:YHWbn+0s
AS2.0で、配列についてです。 hairetu = new Object(); hairetu={ a:1, b:2, c:hairetu["a"]+hairetu["b"] } trace(c) で「3」が出てきてほしいのですが、どうすればいいのでしょうか
AS2.0やったことないけど・・・ こんな感じかな? キャストとか作法が違ってるかもしれんが hairetu = new Object(); hairetu={ a:1, b:2, } hairetu["c"] = int(hairetu["a"])+int(hairetu["b"] ) trace(c)
>> 564 配列じゃなくてオブジェクトね var hairetu:Object = new Object(); hairetu = { a: 1, b: 2 } hairetu.c = hairetu.a + hairetu.b; trace(hairetu.c);
var hairetu:Object = {a:1, b:2, c:this.a + this.b}; これは無理かな?
>>565 >>566 オブジェクトを宣言した後でなく、{}内で済ませたいのですが仕様的に無理なんでしょうか
>>568 いろいろ試してみたけど、俺には出来ないっぽいなぁ
どうしてもObjectのnewと同時に代入終わらせたいなら
var hoge1:Number = 1;
var hoge2:Number = 2;
var hairetu:Object = {a: hoge1, b: hoge2, c: hoge1 + hoge2};
trace(hairetu.c);
とかはだめなんかな
AS2なんだろ?
572 :
Now_loading...774KB :2011/01/28(金) 22:17:50 ID:OMptRVIv
なんだか無理みたいですね ありがとうございます。あとクラスとはなんですか
573 :
Now_loading...774KB :2011/01/29(土) 15:38:10 ID:7CQ9eu2N
>>572 をクラス化するってどんな感じになるんだ?
コンストラクタ内で、aとbの値を入れた後に、c = a + bってやっときゃいいだけじゃね?
あるいは、a + b の値を返すメソッド作るとか?
>>572 クラスについてはヘルプ見るとかググるとかで
575 :
535 :2011/01/30(日) 00:07:21 ID:FN2cN3mU
>>543 お礼が遅くなりましたが、
どうもありがとうございます。
文字列のエンコードを変換したいのですが、byteArrayがnullになってしまいます。 var str:String; : var byteArray:ByteArray = str as ByteArray; var html:String = byteArray.readMultiByte(byteArray.length, "shift-jis");
577 :
Now_loading...774KB :2011/01/30(日) 15:41:01 ID:ak58tC3A
>>576 as は型変換で、String は ByteArray に直接変換できない。
その場合なら、
var str:String;
// ...
var byteArray:ByteArray = new ByteArray();
byteArray.writeMultiByte(str, "shift_jis");
byteArray.position = 0;
var html:String = byteArray.readMultiByte(byteArray.bytesAvailable, "shift_jis");
とすれば行けるかな。
578 :
576 :2011/01/30(日) 21:24:23 ID:1DD2xeWJ
>>577 ありがとうございます!上手く行ったような気がします。
FFがダメっぽいので追加で質問させてください。
根本の問題点がASにあるか分からないのですが、、、。
WinXP上にApacheをデフォルトの設定で構築して、
AS3でコードを書きました。
test.swf?str=あいうえお
のようにブラウザから入力して動かすものを考えているのですが、
文字コードがどうなるかよくわからないので、下記のようなコードを書いて、
引数を、そのまま画面に表示、sjis/euc/utfにエンコード変換して表示、
というように一覧を表示させてみたのですが、
IEとFFで挙動が違います。
IEではSJISだけ空っぽで、他はきちんと表示されます。
FFではどれも文字化けした値になります。
これは日本語の場合で、英語のみの場合はすべて正しい値になります。
きちんと理解したいので、原因と対策を知りたいですが、
ヒントだけでもお願いします。
579 :
576 :2011/01/30(日) 21:25:53 ID:1DD2xeWJ
package { import flash.accessibility.AccessibilityProperties; import flash.display.*; import flash.system.System; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.events.MouseEvent; import flash.utils.ByteArray; public class test extends Sprite { var raw:TextField; var sjis:TextField; var euc:TextField; var utf:TextField; public function test():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point
580 :
576 :2011/01/30(日) 21:26:39 ID:1DD2xeWJ
stage.scaleMode = StageScaleMode.NO_SCALE; var str:String = loaderInfo.parameters["str"]; if (!str) str = "null"; raw = new TextField; sjis = new TextField; euc = new TextField; utf = new TextField; raw.text = "raw:" + str; raw.y = 0; addChild(raw); { var byteArray:ByteArray = new ByteArray(); byteArray.writeMultiByte(str, "shift_jis"); byteArray.position = 0; sjis.text = "sjis:" + byteArray.readMultiByte(byteArray.bytesAvailable, "shift_jis"); addChild(sjis); sjis.y = 10; }
581 :
576 :2011/01/30(日) 21:29:01 ID:1DD2xeWJ
{ var byteArray:ByteArray = new ByteArray(); byteArray.writeMultiByte(str, "euc-jp"); byteArray.position = 0; euc.text = "euc:" + byteArray.readMultiByte(byteArray.bytesAvailable, "euc-jp"); addChild(euc); euc.y = 20; } { var byteArray:ByteArray = new ByteArray(); byteArray.writeMultiByte(str, "utf-8"); byteArray.position = 0; utf.text = "utf:" + byteArray.readMultiByte(byteArray.bytesAvailable, "utf-8"); addChild(utf); utf.y = 30; } } } }
AS2です 音を止めたり音量調節をする制御のバーを作成し、それをフレーム5に配置しました。 フレーム5にはボタンがあり、それをを押すとフレーム30に飛び、 フレーム30にあるボタンを押すとフレーム5に戻るようにしてあります。 ここでフレーム30からフレーム5に戻るとまた音声を読み込む為に音が二重に流れてしまいます。 自分の思いつく策を色々と試してみたものの上手く止まってくれずに困っています。 二重に再生させないようにするにはどうしたら良いでしょうか?
583 :
Now_loading...774KB :2011/01/30(日) 23:39:57 ID:qE4ul60u
as3.0 お絵描きアプリを作成していて、 フォトショップでいうctrl+/ctrl-で、オブジェクトではなく視点?の拡大縮小をしたいのですが、 scaleを変えるしかないのでしょうか? またその際、ペン等のサイズも同じ倍率にしないといけないのでしょうか? よろしくお願いします
>>583 むしろなんでスケールじゃダメなんだ。
キャンバスサイズ広げるわけじゃなくて拡大率なんだからスケールでいいだろう。
BMPでやってるから線がきたなくなる、って意味なら、
巨大なキャンバス作って25%にでも縮小した状態を100%として扱えば良いんじゃない。
それかストローク保存しておいて拡大する度に線の再描画だな。
>>582 フレーム5に来た時、フラグがたってればなにもしない、
フラグがたってなければサウンド読み込み&再生を実行
サウンド再生した時に、フラグをたてる
という仕組みにするのはどうでしょう
586 :
Now_loading...774KB :2011/01/31(月) 12:03:56 ID:u3lHdpSc
>>584 ありがとうございます!
BMPでやってるので拡大縮小されると厳しいですね。
スケールを変えれば実装可能と思いましたが、上記問題を解決する方法がわかりませんでした。
ストロークの保存が実用的だと思います。
参考になるサイトでもあれば教えてください!
as3.0 ストローク 保存で検索するとこのスレがトップにきてしまいます。。
587 :
Now_loading...774KB :2011/01/31(月) 15:09:19 ID:XXk9jQu6
Adobe Flash Builder 4 Standardを使っている者です。 超簡単な掲示板(オールFlash)を作りたいと思っています。 まだ始めたばかりの初心者です。 やり方ですけど 1、入力フォームを作り 2、変数を宣言して 3、スクリプトを書く ですよね? 間違いないでしょうか?
掲示板ってことは複数人で使うのが前提だろうが、 サーバ側はなにも考慮してない様に見えるが大丈夫か?
589 :
587 :2011/01/31(月) 18:07:42 ID:XXk9jQu6
とりあえず、サーバー側の方はなしでいいです。
サーバ側ナシってどういうことよw それと、2,3が独立してるところがわからん。 スクリプト内で宣言するのが変数だろ。 超簡単な掲示板であっても、 入力フォームを保存する先はサーバだし、 ActionScript側のスクリプトなんて、ほんの数行なんだが。
591 :
587 :2011/01/31(月) 18:12:31 ID:XXk9jQu6
すみません。 サーバー側ありでお願いします。
スクリプトを書く だけでいんじゃね?
593 :
587 :2011/01/31(月) 18:18:34 ID:XXk9jQu6
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009 "
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="559" height="472">
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<mx:Form x="130" y="79" width="300" height="300">
<mx:FormItem>
<s:TextArea/>
</mx:FormItem>
<mx:FormItem>
<s:TextInput/>
</mx:FormItem>
</mx:Form>
</s:Application>
これでどうやって書くかがよく分からないんですよ
自分でも試行錯誤してるんですけど
すみませんけど、お願いします。
まぁ、色々とたりんのはわかってるんだろうが、 掲示板といったら必要な機能があるだろ。 今のままじゃ過去の発言が見れないぞ。 まず、それ用の部分を追加。 つぎに、現在は投稿欄のみあるようだから、 その下にでもボタンでも追加。 で、そのボタンを右クリックすると、「Clickハンドラーを生成」ってメニューがでるから、 選択すると、 protected function button1_clickHandler(event:MouseEvent):void っていうのができる。ボタンの方のmxmlを見るとこれを呼ぶように書かれてるはず。 で、そこにサーバ側の呼び出しを書く。 サーバ側は何で作るつもり?PHPやらJavaやらいろいろあるわけだが。
595 :
587 :2011/01/31(月) 18:53:11 ID:XXk9jQu6
親切にありがとうございます。 自分で挑戦してみます。
Flexでググれば例はいっぱいあると思うんだが。 ここで聞くよりずっとはやいぞ。
>>585 ありがとうございます。
ですが、何もしないと言うのがわかりません。
フレーム5に戻った時にフレーム5のタイムラインに音量バーの入ったMCを配置しているので勝手に読み込まれますよね?
フレーム5の音量MCに
soun_flg = true;
if( soun_flg ) {
//なにもしない?
} else {
this.play();
soun_flg = true;
}
これだと二重に再生されてしまいます。
>>597 >タイムラインに音量バーの入ったMCを配置しているので勝手に読み込まれますよね?
いや、勝手に読み込まれるのではなく、音量バーの設置と同時にサウンドを読み込むように
作っているから、その通りに動作してるだけ
音量バーとサウンドの読み込みの関係がわからないので、具体的なことは言えないが
要は、読み込まれないように作ればいいだけだよ
音量MCにフラグを入れてみた所、上手く再生が出来るようになりました! ID:/6KNrYxR様、大変貴重なレスをして下さいまして、ありがとうございました 感謝しつくせません これでやっとゆっくり眠れそうです 本当にありがとうございました
>>586 ライン一本を一つのクラスにして、開始座標と終了座標をクラスに保存しておけばいけるだろ。
自由線なら配列保存しておいてそっから再生成。
どなたか教えてください
loaderで外部ドメインの画像を読み込んで、contentにアクセスすることはできないのでしょうか?
外部ドメイン側にcrossdomain.xmlが存在して、allow-access-fromも設定されていないとダメってことでしょうか?
ローカルで動かした場合、外部ドメインでもcontentにアクセスできていたのですが。。。
---以下エラーログ(一部文字化け)
エラー :
http:// (外部ドメイン)/shakai/images/101218/sha1012181645018-p1.jpg のリソースに対する、
http:// (自ドメイン)/app.swf の要求者からの要求は、ポリシーファイルのアクセス権がないため拒否されました。
*** ZLeB Sandbox ? ***
http:// (外部ドメイン)/shakai/images/101218/sha1012181645018-p1.jpg ????~黷ワ -
http:// (自ドメイン)/app.swf ??黷ワ
SecurityError: Error #2123: セキュリティサンドボックス侵害 : Loader.content:
http:// (自ドメイン)/app.swf は
http:// (外部ドメイン)/shakai/images/101218/sha1012181645018-p1.jpg にアクセスできません。ポリシーファイルへのアクセスも許可されていません。
---以下ポリシーファイルログ
エラー :
http:// (外部ドメイン)/shakai/images/101218/sha1012181645018-p1.jpg のリソースに対する、
http:// (自ドメイン)/app.swf の要求者からの要求は、ポリシーファイルのアクセス権がないため拒否されました。
>>602 ポリシーファイルに正しく記述されていない時のエラーに見えるが。
ローカルでテストした場合と、外部に置いた場合では当然書く内容も変わると思うんだが。
あ、ポリシーファイルのパーミッションの問題かもしれん
Android用のFlashを作ってみようかと思い、とりあえずマルチタッチが うまく機能するのかやってみたんですが、maxTouchPointsの戻り値は1 しか戻らずマルチタッチが使えません。 WebでのFlashはマルチタッチはまだ使えないのでしょうか? それともなにか足りないでしょうか? 環境 FlashDevelop 3.3.2 RTM / Action Script 3 / flex_sdk_4.1.0.16076 Android HTC Desire II( android 2.2) / Flash 10.1.106.16 確認ソースの一部 //マルチタッチをサポートしているか var isMultiTouchSupport:Boolean = Multitouch.supportsTouchEvents; if (isMultiTouchSupport) { //TouchEventかGestureEventのどちらをりようするか宣言する(必須) Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; //最大認識できるタッチポイントの数(指何本まで認識できるか?) var maxTouchPoint:int = Multitouch.maxTouchPoints; txt.text = "最大" + maxTouchPoint.toString() +"個のマルチタッチができます。"; }else { txt.text = "マルチタッチがサポートされていません。"; }
607 :
Now_loading...774KB :2011/02/02(水) 01:44:42 ID:iRr8C/6J
>>606 Android 向けに書きだしたこと無いからわからないけど、
多分 Multitouch.inputMode を MultitouchInputMode.TOUCH_POINT にしているからだと思う。
多点検出するには MultitouchInputMode.GESTURE したらうまくいくかも。
TOUCH_POINT って定数名からして 1 点タップとかの検出水準に制限している感じがする。
MultitouchInputMode.GESTUREでもmaxTouchPointsに変化はなく1でした。 現在マルチタッチを行うWEB上のスマートフォン用のFlashを探していますが ほとんどがAIRのアプリ物ばかりで、WEB上のFlashはみなシングルタッチ物 ばかりで…
609 :
Now_loading...774KB :2011/02/02(水) 10:36:20 ID:tPceh1CK
ものすごくスレ違いな気がしますが、AS2.0でTwitterの発言やら タイムライン等を取得する方法を説明してるページってあるのでしょうか? 探してもAS3.0やAIRばっかりでさっぱり分かりません。
610 :
606 :2011/02/02(水) 11:11:17 ID:XnLcLJgg
ではGESTUREは使えるのか?ということでやってみましたが、 GESTUREも使えないようです。 さすがにこれはおかしい。 なにか手順がたりないのか(ググるとこれだけでいけるみたい) そもそもWEBでのFlashではマルチ、ジェスチャーはサポートできて いないのか… 確認ソースの一部 var isGestureEvents:Boolean = Multitouch.supportsGestureEvents; if (isGestureEvents) { Multitouch.inputMode = MultitouchInputMode.GESTURE; var supportGesture:Vector.<String> = Multitouch.supportedGestures; var s = "次のジェスチャーがサポートされています\n"; for (var i:int = 0; i < supportGesture.length; i++) { s += "\n" + supportGesture[i]; } } else { s = "ジェスチャーはサポートされていません。"; } txt.text = s;
611 :
606 :2011/02/02(水) 11:19:03 ID:XnLcLJgg
一部間違っていましたが結果は変わりませんでしたorz Multitouch.inputMode = MultitouchInputMode.GESTURE; // 先にやらないとね var isGestureEvents:Boolean = Multitouch.supportsGestureEvents; if (isGestureEvents) {
612 :
606 :2011/02/02(水) 11:44:39 ID:XnLcLJgg
613 :
Now_loading...774KB :2011/02/02(水) 19:01:34 ID:ZD7/q7In
AS3.0です。 長方形のキービジュアルがあって、 そのキービジュアルにマウスオーバーした時に、 キービジュアルに被さるようにして右からバナーが出てきたとします。 キービジュアルからマウスアウトすると、 バナーが引っ込んでほしいのですが、 バナーの上にマウスがのっかっても引っ込んでしまいます。 (キービジュアルからマウスアウトされたと判断されてしまう) バナーの上にカーソルがある場合は、引っ込まないで欲しいです。 こういったときって、どのように書けばよいのでしょうか? ご存知の方いらっしゃいましたら ご教授よろしくお願いいたします。
>>613 バナーのmouseEnabledをfalseに。
若しくはバナーをキービジュアルの子にして、mouseoverでなくrollover。 バナー移動周辺で適当にフラグ立ててもいいし、ヒットテストでも何でもいけるよ
616 :
Now_loading...774KB :2011/02/03(木) 11:33:00 ID:DtdHAy5F
>>614 さん
ありがとうございます!
バナー自体も、マウスオーバーすると色が薄くなり、
クリックすると別URLへ飛ぶというマウスイベントが発生します。
なのでバナーのmouseEnabledをfalseに出来ないんです。
>>615 さん
ありがとうございます!
キービジュアルのマウスイベントをrollOverですか?
バナーのマウスイベントをmouseOverですか?
ちょっと試してみます、ありがとうございます!
617 :
Now_loading...774KB :2011/02/03(木) 15:15:50 ID:0VxM8uRD
as3 というより Flash の質問になってしまうんですけど、 ライブラリに登録したビットマップをムービークリップに配置して9スケールグリッドを適用しても普通に比率が変わってしまいます。 試しにビットマップを削除して描画ツールで角丸を書くとちゃんと角の比率が固定されました。 9スケールグリッドをビットマップに適用する方法はありますか?
618 :
Now_loading...774KB :2011/02/03(木) 22:35:54 ID:6dfwCgmK
MC(body)にShapeオブジェクト(sh)を設置し、このshに描画させようとしています。 (AS3,FlashCS4,WinXP) まずShapeオブジェクトを設置 var sh:Shape = new Shape(); body.addChild(sh); そして、bodyの別の子MC0からshを参照しようと trace("sh: "+MovieClip(parent).sh); と書くとundefinedになります。 ※兄弟の参照が出来ない。 AAで書くと下のようになります。どうしたら良いでしょうか? ―― sh | body--| | ―― MC0
619 :
Now_loading...774KB :2011/02/03(木) 22:47:52 ID:vsaWs73/
yahoo!プライムディスプレイフラッシュバナーについて 主題の件ですが、フラッシュバナーで動画を流すことになりました。 今まで何度かフラッシュバナーを作ったことはあるのですが、動画を使用するのは今回が初めてです。 動画のフォーマットはFLVなのですが、ヤフーのフラッシュバナーってコンポーネントを使用しても特に問題ないのでしょうか?また、もし使用できなかった場合、みなさんはどの様にしてバナーに動画を埋め込んでいるのでしょうか? 音声有でフレームレートが18のため、タイムライン制御では難しいと考えております。 ぜひご教授お願いいたします。
>>619 それAcitonScriptの質問?
てかyahooにはサポート掲示板とかないの?
package for iphoneでgooglemapを表示したいと思っているのですが どなたか実装出来た方、いらっしゃいますでしょうか。 APIを取得しswf上では普通に表示出来るのですがiphoneにデータを移したら表示出来ませんでした。
622 :
576 :2011/02/05(土) 00:28:36 ID:q9UC88Bz
>>578 の件、まだ解決しません!
ソース載せてるんですけど、どなたか分かりませんか〜?><
623 :
Now_loading...774KB :2011/02/05(土) 01:48:28 ID:MbxDPXbe
as3でrootの変数を参照したいのですが、 extends Spriteしてaddchildしないといけないのでしょうか? Objectのままのclassがrootを参照することはできないのですか? あと何も描かれてないSpriteでも多くaddchildすると重くなるのでしょうか?
624 :
Now_loading...774KB :2011/02/05(土) 16:05:31 ID:veHsY6aG
>>623 クラス作成時にthisなりでルートのパス渡してやればいいんじゃないの。
626 :
Now_loading...774KB :2011/02/05(土) 23:25:13 ID:MbxDPXbe
任意のボタンを作成するにはどうすれば良いのでしょうか? Spriteクラスを継承したクラスをボタンとして使おう思ったのですが、 TextFieldをaddChildして、クリックイベントをイベントハンドラに渡すと event.targetでTextFieldを受け取ってしまいます。 自作のボタンクラスをtargetとして受け取るにはどうすれば良いのでしょうか? dispatchEventでしょうか?これは上手くいきませんでしたが…
テキストのselectableだかをfalseにすればいいんじゃないかな。
>>628 一旦ボタンクラスでTextFieldからのイベントを受け取って
そこからdispatchEvent(new MouseEvent(…))するとか?
引数は受け取ったイベントから持ってきて
>>628 currentTargetでとれない?
textfieldのmouseEnableをfalse
633 :
628 :2011/02/06(日) 12:47:19 ID:pO1Lv7fi
>>629-632 ありがとうございます!
mouseEnableをfalseで出来ました!
クラスA,B,C,Dのインスタンスをそれぞれa,b,c,dとする a内でbを作り、b内でcを作り、c内でdを作る d内の作業の結果d内でaのプロパティをいじりたい時はどうしたらいいでしょうか コンストラクタにthisを次々渡していくのも階層が深くなるとわかりにくくなるし対象が複数あると面倒になります
d.c.b.aみたいアクセスしたくない!っていってんだよね? ただ、オブジェクト指向ってのはそういうもんだ。 rootParentみたいなプロパティをb,c,dにそれぞれ作って、 それぞれ、return rootParentみたいにしたら、 dでもただ、rootParentとしてアクセスするだけで 取れるようになるけどね。
636 :
Now_loading...774KB :2011/02/07(月) 02:06:59 ID:ql0EDlWA
ttp://www.libspark.org/wiki/QRCodeReader こちらのライブラリを使用して、QRコードを読み取るコンテンツを作りたいと考えています。
実際にダウンロードしてみて、同梱されていたswfでは問題なく動作したのですが、
いざ自分でasファイルからパブリッシュしてみると、
読み取りに時間がかかったり、読み取っても文字化けを起こしてしまいます。
パブリッシュの仕方などに問題があるのでしょうか?よろしくお願い致します。
あ
638 :
Now_loading...774KB :2011/02/07(月) 23:57:07 ID:aiS+2T7c
オブジェクトをある座標x1,y1から 別の座標x2,y2にどんな距離でも一定の早さで移動させたいのですが その際のx yの増減値の出し方を教えてください
>>638 距離/速度 を tweener にくれてやれ
速度が一定なら、増減一定にすればいいし、 移動時間を一定にするなら、移動時間で距離を割ったものを増減にすればいいでしょ。
641 :
Now_loading...774KB :2011/02/08(火) 20:13:58 ID:yaTKVPIJ
環境:AS3 ステージ上にインスタンス複数あって、インスタンス名が test1 test2 test3 みたいな感じであるんだけど、 それをfor文使って呼び出したい。 for(var i:1; i<5; i++){ trace(test+i.x); } という風に書いても、testとiを別々に認識してるっぽいんですが どうすればよいですか?
あ、for文の記述間違えた・・・ 申し訳ない・・
Flashで設定したインスタンス名で直接アクセスすることは出来ないから無理。 (getChildByNameとかで取り出してnemeを比較するとかで間接的には可能だけど) 配列に入れておいてアクセスのほうが現実的だし速い。
644 :
Now_loading...774KB :2011/02/08(火) 22:09:48 ID:yaTKVPIJ
>>643 >>Flashで設定したインスタンス名で直接アクセスすることは出来ないから無理。
あれ、無理なの?
trace(test1.x)
とかにすると、ステージ上にあるtest1のxは取得できるよね。
変数+数字
が無理ってことなのかな。
645 :
641 :2011/02/08(火) 22:20:10 ID:yaTKVPIJ
連投でスマナイ・・・ 自己解決したので記載しておきます。 for (var i=0; i<3; i++) { trace(this["tes"+i].x); } で、いけた。 【 this["tes"+i].x 】 この部分のthis後にドットを付けないとか、 ドットシンタックスの考えが緩かったみたいだ すまん・・・
うわ、その手忘れてた。 つーか、ステージ上のどこかにあるって意味でとらえていた。 そのやり方だと、直接の子しか扱えないから注意がひつようやね。
すみません、RTMFPでClassを送信したんですが、 送信先で強制的にObjectに変換されてしまいます。 受け手がclassの型だともちろん受け取れないし、 受け取ったObjectを普通にキャストしても変換出来ないのですが、 どうにか、元の型にキャストする方法はないですか? もしくは、Objectに変換されない方法はないですか? 知ってたら教えてください。お願いします。
そこら辺やったことないけど、registerClassAlias()とかgetClassByAlias()とか使うんじゃね?
649 :
Now_loading...774KB :2011/02/11(金) 17:00:08 ID:K9WN2l2i
Worldって名前のクラスを作って new World();ってコードを書いたんだが 「引数の数が正しくありません。正しくは 2 です。」 って出るんだけど、WorldってAS3の予約語(?)だったりするの?? 試しにCS5持ってる人、アクションウインドウに とくに何も作らずにnew World();だけ書いてみ? 「未定義である可能性が高いメソッド World の呼び出しです。」 って出るはずなのに 「引数の数が正しくありません。正しくは 2 です。」 ってでるから(汗 Worldって名前を使わなければ大丈夫なんだけど リファレンスにもWorldなんてクラス無いし、気になって眠れない! 誰か知ってる人たすけて!
650 :
Now_loading...774KB :2011/02/12(土) 00:07:06 ID:fc6fksb4
同じものを同じ位置大きさでaddchildしまくっても問題ないのでしょうか?
651 :
Now_loading...774KB :2011/02/12(土) 00:14:42 ID:fc6fksb4
650解決ゾロリ すでにあるobjをaddchildしても数は増えないみたいですた
652 :
Now_loading...774KB :2011/02/12(土) 00:57:19 ID:sB+ZgICf
XMLデータを使ってBox2dに画像を読み込みたいのですが やり方がさっぱりわかりません。 ググってもBox2dにXMLデータを読み込ませる方法が 載ってないので困っています。 誰か教えてください。
653 :
Now_loading...774KB :2011/02/12(土) 01:01:35 ID:sB+ZgICf
>>652 ですが、
FlashのCSは4
ActionScriptは3.0
Box2DはBox2DFlashAS3_2.0.2
でやってます。
654 :
Now_loading...774KB :2011/02/12(土) 13:19:50 ID:2nWmwVlF
>>652-653 まずはActionScriptでB2Bodyを作ってみるべし!
話はそれからだ!
655 :
Now_loading...774KB :2011/02/12(土) 18:51:46 ID:sB+ZgICf
>>654 ActionScript入門wikiを読んであらかたの使い方は
よちよちながら試したんですが
XMLの読み込みだけが上手くいきません。
656 :
Now_loading...774KB :2011/02/12(土) 19:49:47 ID:sB+ZgICf
>>655 です。
XMLの読み込み解決しました。
お騒がせしてすいませんでした。
657 :
Now_loading...774KB :2011/02/12(土) 20:36:06 ID:NtbZ+EDU
Box2Dです。 b2Bodyクラスの物体が停止したことを、IsSleepingメソッド以外で検知するにはどうしたら良いかな? 物体が停止したかどうかをIsSleepingで検知しようとすると、 見た目では動いてなくても、スリープになるまで時間がかかってしまう場合も少なくないんで。 GetLinearVelocity()とGetAngularVelocity()の2つを見て、適当なところで停止したと判断してしまって大丈夫? ActionScriptどころか、FLASHの質問ですら無いんだけれど Box2Dの話が出来そうなところがここしか見つからんかった(´・ω・`)
659 :
Now_loading...774KB :2011/02/13(日) 11:08:34 ID:NMhle9jq
質問させてください。 Loaderで外部画像を取得して、表示リストに追加した時、画像のサイズが大きく表示されるのですが、 どのようにすれば元のサイズで表示させられるのでしょうか?
>>659 addChildしてるオブジェクトが、拡大されてるんじゃないの?
661 :
659 :2011/02/13(日) 15:12:53 ID:NMhle9jq
>>660 FlexBuilderでAS3プロジェクトを書きだしています。
おっしゃるとおりにhtml側でswfobject.jsにより生成される<object >タグの幅と高さをオブジェクトと同じ値にしたところ、
かなり元のサイズにちかい見栄えで表示されました。
しかし、実際に表示されている画像が数ピクセル縮小されて表示されており、シャギーが出てしまいました。
この場合何か指定が足りないのでしょうか?それともブラウザの挙動で仕方ないのでしょうか?
もう一度ご回答よろしくお願いします。
ロード完了後にLoader.content.widthとLoader.content.heightで元のサイズ取得。
普通は、100%で表示される 縮小されて見えるとすれば、swfの表示スケールやサイズか、親のDisplayObjectContainerか Loaderか、とにかくどこかでwidthやscaleX等の変形が行われていると思うんだが
664 :
659 :2011/02/13(日) 16:37:20 ID:NMhle9jq
>>662-663 アドバイスありがとうございます。
指摘していただいた箇所を順にチェックしたところ、
this.stage.scaleMode = StageScaleMode.NO_SCALE;
とメインクラスでステージのスケールモードを指定したことで画像が正確な大きさで表示されました。
本当はコンテンツ全体の幅を正しく取得しなければ根本的な解決にはならない気がしますが、
こちらのスキルが足りないようです。
ともかく希望の結果を得られて助かりました。ありがとうございました。
665 :
Now_loading...774KB :2011/02/14(月) 13:38:01 ID:QuEmHj7n
JPG外部読み込みのFLASHを作ってるのですが 縦長と横長の画像がありまして、表示される位置がバラバラになってしまうので 縦長(このピクセルサイズ)の画像の時は、ここの座標に表示する みたいなピクセルサイズによって座標を振り分けるスクリプトを書きたいのですが、 どなたかわかりますでしょうか?
>>666 そうでしたね。試行錯誤してなんとか解決しました。
actionscript3.0 ライブラリ入門 この本を立ち読みしようと本屋に行ったら 見つけた瞬間他の人にとられた パラパラめくってたんで十分ほど待ってたらそのままお買い上げ 嫌がらせか!
669 :
Now_loading...774KB :2011/02/15(火) 05:19:19 ID:sIg1VixI
AS2です。 Winアクセサリの電卓風のツールを作ったんですが、 ボタンが20個程あるため同じようなコードの繰り返しで気に入りません。 シンプルにまとめる方法はありますか? ボタンへの個別の記述は考えておりません。 以下抜粋です。実際は20行程続いています。 h5.onRelease = function() {sbl(h,5,36e4)}; h4.onRelease = function() {sbl(h,-5,36e4);}; h1.onRelease = function() {sbl(h,1,36e4);}; m1.onRelease = function() {sbl(m,-1,6e4);}; ・ ・
671 :
Now_loading...774KB :2011/02/16(水) 10:39:14 ID:vxx+Mb3V
AS3です。 配列に格納したインスタンスに対するマウスイベントの際、 そのインスタンスを格納している配列内での番号を取得することはできないでしょうか? 以下のような使い方をしたいと考えているのですが…… var parts:Array = new Array(); for (var i:int = 0; i < 10; i++) { parts[i] = new Sprite(); //中略、四角形や円などの図形を生成 addChild(parts[i]); parts[i].addEventListener(MouseEvent.CLICK, clickHandler); } function clickHandler(evt:MouseEvent):void { //ここで、クリックされたインスタンスの、配列parts内での番号を取得したい var clickNum:int = クリックされたインスタンスの番号; for (var i:int = 0; i < parts.length; i++) { if (i != clickNum) { //クリックされたインスタンス以外のインスタンスに任意の処理 } } } ご存知の方、よろしくお願いします。
>>671 parts[i]に、iの値をもたせるとか
Dictionaryクラスを使うとか
>>67 ver clickNum:int = parts.indexOf(evt.target as Sprite)で取れないかな
as Spriteはいらないかもしれないけど
675 :
Now_loading...774KB :2011/02/16(水) 23:41:13 ID:3TmsejAJ
はじめまして FlashCS3を使用(AS3.0) ActionScript勉強中の初心者です。 twitterの自分の発言をjavascriptで10秒毎に取得、 値へ受け渡し、Flashで表示といった事は可能でしょうか? Flashで外部javascriptを呼び出し ↓ javascriptでtwitterの発言を取得 ↓ 発言を表示(これを十秒毎) PHPとFlashを連動させてtwitterの発言を取得するという 記事はネットでみつけたのですが javascriptで取得するというのは見つけられず… ExternalInterfaceクラスというのを利用すれば できそうな感じもするんですが やはり難しいのでしょうか ご助力お願いいたします。
flash.media.Sound クラスを中に入れたクラスを作成したのですが、 クラスの外からイベントハンドラを指定する方法がわかりません。 何か実例があれば教えていただけないでしょうか。 よろしくお願いします。
>>675 twitterのAPIがどんなものか知らないけど、http〜のURLにアクセスするだけなら、
javascriptなんか使わなくてもFlashから直接たたけるよ
678 :
676 :2011/02/17(木) 02:12:27 ID:W2cPq96a
>>676 訂正します。
flash.media.Sound クラスを中に入れたクラスを作成しようと
しているのですが、
クラスの外からイベントハンドラを指定する方法がわかりません。
何か参考になるサンプルコードがあれば教えていただけないでしょうか。
よろしくお願いします。
>>678 こういうこと?
private var s:Sound;
public function setListener(func:Function):void{
s.addEventListener( , func);
}
680 :
Now_loading...774KB :2011/02/17(木) 03:35:19 ID:n8Ewdaeh
TextInputtの文字サイズを変更しようと TextInputを継承したクラスのコンストラクタで textField.defaultTextFormat = new TextFormat("MSゴシック", 20, 0x000000, false); と設定したけど 反映されないのですがどうしてでしょう?
flash IDE上のプレイヤーが10.2に更新されないのですが、ひたすらアップデートを待つしか方法はないのでしょうか??
>>680 > textField.defaultTextFormat = new TextFormat("MSゴシック", 20, 0x000000, false);
継承したクラスならthis.defaultTextFormatていいんじゃないのかな
AS3、FlashCS3です。 重い関数をfor文を使って10000回くらい回しているのですが、タイムアウトエラーが出ます。 ググると、処理を分割すればよい、と書いてありましたが、どのように分割すればよいのでしょうか。 よろしくお願いします。
flash.utils.Timerで、複数回呼び出すとか。
>>677 遅レスになってしまってすいません。
ありがとうございます。
ぐぐると、
Flashが直接apiにアクセスできないという記事を見かけたので
てっきりできないものかと…
ただ、参考になりそうなページを見つけたので
なんとか取得できるよう頑張ってみます。
686 :
Now_loading...774KB :2011/02/18(金) 14:50:29 ID:NNEukscE
AS3ですがムービークリップの 3D回転の設定方法は分かったのですが 3d中心点の設定方法が分かりません 分かる方いらっしゃいましたら教えてもらえないでしょうか
個人の自由なんだろうけど命名規則ってどうしてますか? とくにアンダースコアを変関数名の前に置いたり置かなかったりする人がいて気持ち悪いです。 引数、ローカル変数にはアンダースコアつけるとかそういう使い方なんでしょうか? あとgoToAndPlay go_to_and_playとか
俺はJavaの命名規則を使ってる。 >引数、ローカル変数にはアンダースコアつけるとかそういう使い方なんでしょうか? 人それぞれだからよくわからんが、 俺はクラスのprivate変数を_ではじめるようにしてる。 こうすると、たとえば下のようなクラスがあるとすると、 class A { private var _x; private var _y; public function setPosition( x:Number, y:Number ){ _x = x; _y = y; } } ってかける。thisを省略してもわかりやすいようにしてるだけ。 引数には使わないようにしていた方が良いと思う。
>>689 ありがとう。参考にします
たしかにprivateなら外部からhoge._xとよばされることもないしいいね。
そうそう。 外から呼ばれるor呼びたいってなれば、 public function get x():void { return _x; } ってすればいいし。setterも同じ。 ちゃんとオブジェクト指向してる感じになって、 精神衛生上よろしい。
693 :
Now_loading...774KB :2011/02/19(土) 14:50:57 ID:NBQujj4h
すみません、初心者なんですが質問させて下さい。 Mac OSX 10.6 Flash CS5 AS3.0です。 一度投稿しようとしたら改行が多すぎるとエラーが出たので、2分割して連続投稿させて下さい。 ステージ上に配置したMCを、同じステージ上に配置したボタンをクリックする事で横スクロールさせて 画面サイズより大きいMCがウィンドウ内で動いてページ移動するみたいにしたいです。 そこで、動くMCをcontents_mcとして、そのMCの1フレーム目で現在の座標nowXをENTER_FRAMEで常に取得させ メインタイムラインのボタンによって指定される変数targetXと比較して、差があれば動くようにしようと思い contents_mcの1フレーム目に以下のように書きました。 addEventListener(Event.ENTER_FRAME, xScroll); function xScroll(eventObject:Event):void { var targetX; var nowX = this.x; var distX = targetX-nowX; var moveX = distX/3.2; if (distX <= 0.5 && distX >= -0.5) { this.x = targetX; } else { this.x += moveX; } } 続く
694 :
Now_loading...774KB :2011/02/19(土) 14:53:30 ID:NBQujj4h
>>693 の続きです
上記のメインタイムラインのボタンクリックでcontents_mcの中のtargetXに値を指定してみました。
btn.addEventListener(MouseEvent.CLICK, setTarget);
function setTarget(event:MouseEvent):void {
Object(this).contents.targetX = 500;
}
これでMC内で自動(?)で数値の差を検出してスクロールしてくれると思ったのですが、全く動きません。
AS2.0までのイメージだとこれで動きそうだと思ったのですが、何がいけないのか分かりません。
漠然とした質問で恐縮ですが、どなたか分かる方、ご教授ください。
よろしくおねがいします。
>>694 仕組みが適切かはおいといて
xScrollのtargetXってローカル変数じゃない?
ご指摘ありがとうございます! 恥ずかしすぎる見落としでした。targetXの宣言をfunctionの外に出したら動きました! 本当にありがとうございます。 もう一つお聞きしたいのですが、こういったケースではどういう仕組みが一般的なのでしょうか? 動かす為に常時位置を比較するのは負荷的に良くはないとは思うのですが・・・ クリックイベントが起きた時だけenterFrameで動かすという感じなのでしょうか? もし良ければ教えて下さい。
クリックした時だけ動くってなら、CLICKイベントでaddEventListener(Event.ENTER_FRAME, xScroll)して 目標の位置まで動いたらremoveEventListenerするとか? 大した負荷ではないとは思うが、ずっとxScroll呼び出し続けるってのは好きじゃないな、自分は この場合addEventListenerの前に無駄でもremoveEventListenerしておかないと 動いてる時にクリックされた場合におかしくなるだろうけど
あー。ちょっとずつ動かしたいからENTER_FRAMEは必須なのか じゃあ俺もずっと監視したくないからクリックでaddEventListenerで着いたらremoveEventListenerかな Tweenerって中どうなってんだろ。
どうもありがとうございます。 動き終わったらremoveEventListener、そういう手があったんですね。 イメージ通りです。 まったく分からず申し訳ないのですが、想像で書いてみました。 contents_mcの1フレーム目です。 var targetX; addEventListener(MouseEvent.CLICK, xScroll); function xScroll(event:MouseEvent):void { addEventListener(Event.ENTER_FRAME, xMove); //ここで入れ子にする感じ function xMove(eventObject:Event):void { var nowX = this.x; var distX = targetX-nowX; var setP = distX/3.2; if (distX <= 0.5 && distX >= -0.5) { this.x = targetX; this.removeEventListener(Event.ENTER_FRAME, xMove); //removeのイメージ } else { this.x += setP; } } } こんな感じで入れ子にするということですか? 理解が出来ていなくて申し訳ない気分ですが、宜しくお願いします。
>>699 いや、setTargetで
removeEventListener(Event.ENTER_FRAME, xScroll);
addEventListener(Event.ENTER_FRAME, xScroll);
と書いて、 xScrollで
if (distX <= 0.5 && distX >= -0.5){
this.x = targetX;
} else {
this.x += moveX;
}
こんな感じ
>>700 は途中で書き込んじゃった
if (distX <= 0.5 && distX >= -0.5){
removeEventListener(Event.ENTER_FRAME, xScroll);
this.x = targetX;
} else {
this.x += moveX;
}
こんな感じ
わざわざ書き直して頂いて本当にありがとうございます。 また分からない事が出てきたので質問させて下さい。 > setTargetで > removeEventListener(Event.ENTER_FRAME, xScroll); > addEventListener(Event.ENTER_FRAME, xScroll); > と書いて setTargetで、というのはスクリプトの最初に書くっていう事ですか? 理解が進まず本当にすみません・・・
function setTargetの中ってことだろ。
すみません、理解不足もいいとこでした。 感謝と申し訳ない気持ちでいっぱいです。 もっと勉強します! みなさま本当にこんなヤツに丁寧に教えて下さってありがとうございました。
そろそろ2.0って絶滅したの?
2.0信者の俺もすっかり3.0に染まってしまった もう終わりだろう
Flex3+ActionScript3.0の初心者向けのもので、 学習によってObject思考のプログラミングが 身につく本やサイトを探しています。 これはよかったというものがあればお教えください。 よろしくお願いします。
Actionscript入門wiki
710 :
Now_loading...774KB :2011/02/20(日) 17:07:38.52 ID:xchreEAl
as3.0です。 お絵描きアプリを作ってるのですが、拡大縮小ではまってます。 最初に線か何かを描いて、その矩形領域でビットマップにしてSpriteに入れています。 そのSpriteを拡大し、その倍率を見てビットマップも拡大(transform)してるのですが。 次にビットマップに線を描いたときの倍率?が、拡大したままになってしまいます。 先に拡大したビットマップをラスタライズみたいにできないのでしょうか? 拡大を確定させたあとは、そのビットマップをspriteに入れて、次に描くときは倍率1で描きたいです。 よろしくお願いします。 var sclX = Sprite[INDEX].width / width_be4_transform; var sclY = Sprite[INDEX].height / height_be4_transform; var mt:Matrix = new Matrix; var radian:Number = 0; var tx = 0; var ty = 0; mt.createBox(sclX, sclY, radian, tx, ty); bmpArray[INDEX].transform.matrix = mt; Sprite[INDEX].graphics.clear(); Sprite[INDEX].addChild(bmpArray[INDEX]); //拡大したbmpを最新の大きさに変更 mt.createBox(1, 1, radian, tx, ty); bmpArray[INDEX].transform.matrix = mt;
>>710 拡大したBitmapのBitmapDataを新しく作ったBitmapDataにdraw()で描いて、それをBitmapに戻すとか?
712 :
Now_loading...774KB :2011/02/20(日) 17:24:59.67 ID:xchreEAl
>>711 あ、なるほど! Bitmapはただの入れ物か。
Bitmapを大きくしたところでBitmapData自体が大きくなるわけではないんですね。
ありがとうございました。どこかで会ったらコーヒーおごります!
713 :
708 :2011/02/20(日) 19:53:32.53 ID:mROlFnPG
オブジェクト指向は結局いろいろやってみた後じゃないと理解できんとおもう。 なるほど、そういうことだったのかって。
他人がAS3.0でどんな実装してるのかまったくわからん 例えば規模によるだろうけどゲーム作る時にいくつくらいのクラスがあるのか
今自分が作ってるちょっとしたアクションパズルは70くらい 自作のライブラリのクラスまで含めると100近くになるな
70とか管理大変そうだな… ゲーム作ろうと今月初めに勉強始めたけど先は長そうw
パッケージとかちゃんと考えてればそこまで大変でも無いと思うけどな。
まぁインターフェイスや基礎となるクラスも含めた数だから しかも結構細かくクラス作ってるし
地味にAbstractが無いのがすっきりしないよな
721 :
Now_loading...774KB :2011/02/21(月) 00:21:07.22 ID:epXN21Dm
>>711 できなかったです。>710から変化なしです。
どこかおかしいところがあるのでしょうか。
var sclX = Sprite[INDEX].width / width_be4_transform;
var sclY = Sprite[INDEX].height / height_be4_transform;
var mt:Matrix = new Matrix;
var radian:Number = 0;
var tx = 0;
var ty = 0;
mt.createBox(sclX, sclY, radian, tx, ty);
bmpArray[INDEX].transform.matrix = mt;
var tbmd = new BitmapData(Sprite[INDEX].width, Sprite[INDEX].height, false, 0x0000ff00);
tbmd.draw(bmpArray[INDEX]);
bmp_data_array[INDEX].dispose();
bmp_data_array[INDEX] = tbmd;
bmpArray[INDEX] = new Bitmap(bmp_data_array[INDEX]);
Sprite[INDEX].graphics.clear();
Sprite[INDEX].addChild(bmpArray[INDEX]);
>>721 > tbmd.draw(bmpArray[INDEX]);
tbmd.draw(bmpArray[INDEX], mt);みたいに、draw()にMatrix渡してやらないとダメとかかな
試してないけど
723 :
Now_loading...774KB :2011/02/21(月) 06:33:19.20 ID:rlcvUDcJ
Box2Dを使って、アクションゲームを作っているのですが 下からは登れるけど、上からは降りれない地面を作りたいのだけれど どうすればできるのかさっぱり思いつかない TA SU KE TE
724 :
Now_loading...774KB :2011/02/21(月) 10:43:29.10 ID:+xwoAhh0
>>722 ありがとうございます。
調べてみました。
Bitmapdataに変形などを加えるときは、おっしゃる通りdrawの第2引数を指定しないといけないみたいです。また、初期化しない限りそのプロパティは保持されるみたいです。
帰ってから再挑戦してみます!
Adobe Flash Builder 4 Standard 通常版を使っている者です。 質問があります。 どういう風にプログラムを書いていけばいいのでしょうか? ここがまだ分からなくて・・・ 本読んでもよく分からないんですよ すみませんが誰か教えて下さい。 よろしくお願いします。
本読んでわからんのに、ここでどうやって教えるんだよw
727 :
Now_loading...774KB :2011/02/21(月) 17:38:30.33 ID:rlcvUDcJ
ようし!おれが教えてやる!! 連絡してくれ!!
728 :
725 :2011/02/21(月) 18:09:24.15 ID:Vxmv9X6k
簡単に分かりやすく教えてほしいです。 よろしくお願いします。
おい。 本気なら何がしたいとか、何がわからんのかとか具体的に質問します。
730 :
Now_loading...774KB :2011/02/21(月) 18:16:24.15 ID:rlcvUDcJ
まずは「僕は変態です!!」という文字をtraceしてみるのじゃ!! traceは知っておるかね?
731 :
725 :2011/02/21(月) 18:23:58.16 ID:Vxmv9X6k
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009 "
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="671" height="580">
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<mx:Form x="185" y="93" width="301" height="280">
<mx:FormItem label="内容">
<s:TextArea/>
</mx:FormItem>
<mx:FormItem label="書き込み">
<s:TextInput/>
</mx:FormItem>
<mx:FormItem>
<s:Button label="OK"/>
</mx:FormItem>
</mx:Form>
</s:Application>
超簡単な掲示板を作ろうとしています。
ここからどうするか、分かりません。
プログラムをどう書けばいいか分からないんです。
よろしくお願いします。
732 :
Now_loading...774KB :2011/02/21(月) 18:26:31.29 ID:rlcvUDcJ
Flexかよ!
733 :
Now_loading...774KB :2011/02/21(月) 18:29:37.18 ID:rlcvUDcJ
その前に掲示板ってPerlとかPHPとか使わないと作るの無理じゃね?
他の人も書いてるけど、サーバ側のプログラミングも要るんだが。 参考書の「データサービスに接続」のところがあれば読んでみたら?
ttp://wonderfl.net/c/g9s1/ こちらでなぜキラキラしてみえるのでしょうか?
キラキラ用の1/4の大きさのキャンパスを作ってもとのBitmapDataを縮小して入れ、それを4倍してブレンドモードADDで加えてるためブレてみえるのがミソのようですが、
なぜキラキラするピクセルとしないピクセルがあるのか
なぜ点滅するのか
がいまいちわかりません
最初に縮小する際に奇数ピクセルの情報が抜け落ち、それを拡大する際にも情報が戻らないため、
x座標が変わらないのでxが奇数ピクセルの雪はキラキラキャンバスに一生書き出されないのでずっとキラキラせず、
x座標が偶数ピクセルの雪はy座標の偶奇に応じてキラキラキャンバスに書き出されたり書き出されなかったりするため点滅して見える
みたいな解釈でいいのでしょうか?
736 :
Now_loading...774KB :2011/02/21(月) 22:52:14.08 ID:rlcvUDcJ
うんうん!そのとおり!
あってんのかバカにしてんのかわかんねえww ありますんみたいなもんか
738 :
Now_loading...774KB :2011/02/21(月) 23:08:02.62 ID:rlcvUDcJ
739 :
Now_loading...774KB :2011/02/22(火) 00:49:41.31 ID:SZwWvtRp
>>721 >>724 です。
ダメでした。。
一度変形したbitmapdataは、それを他のビットマップデータにdrawしても変形した情報が適応されてしまうのでしょうか?
drawしても、そのビットマップにまた描こうとすると描画したやつが拡大されてしまいます。
誰かたすけてくださいー
bitmapDataなんて、ピクセルの色情報を羅列しただけでしょ?
拡大も何もないとおもうんだが・・・
>>721 の
bmpArray[INDEX].transform.matrix = mt;
をしたままなら、変形が適用されたままってのは当たり前でしょうに
>>739 親であるSpriteを拡大してるから、それが反映されてるんじゃね?
742 :
Now_loading...774KB :2011/02/22(火) 02:38:41.88 ID:SZwWvtRp
>>721 やりたいことを言葉で説明するの難しいっすね
bmpArray[INDEX].transform.matrix = mt;で拡大されたビットマップを新たに作ったbitmapdataにdrawして、
次からは倍率1の線等をそのbitmapdataに描きたいんです。
先のコードを実行すると、次に描いた線も拡大されてしまうのです。
>>741 spriteの拡大が反映しちゃってるのかもしれないっす。
拡大したビットマップのサイズで新しいspriteに入れれば大丈夫そうですかね?
google chromeを使用して何タブも開けてメモリを食っている状態でWonderflなどのFlashの ページを開けてFlashを見るとフレームレートが落ちてもっさりになるんですが Flashコンテンツの上でマウスカーソルを素早く動かすと本来のフレームレートに戻るようです。 マウスカーソルを離した状態でも見ているページのFlashのフレームレートが落ちないように できないもんですか?
メモリ食ってんだから無理に決まってんだろ タブ閉じろ マウス動かすうんぬんがむしろ勘違いじゃね
>>743 つか、それはASで解決する問題じゃないと思うぞ
746 :
735 :2011/02/22(火) 18:36:12.32 ID:MJfXbLt2
結局私の解釈でいいのでしょうか そもそも画像を縮小するときにピクセルは消えるのでしょうか。それとも平均の色をとるのでしょうか
747 :
Now_loading...774KB :2011/02/23(水) 00:09:34.18 ID:rNdSWydr
AS3,WinXP,FlashProCS4 メモリ節約のため自身がクリックされた時、自身をremoveChild後、更に自身を nullにするにはどうしたら良いでしょうか? 試しに下のようにthis= null;にしましたが、『1050: 参照値以外の代入はできません。』 と出ます。 buttonMode = true; addEventListener(MouseEvent.CLICK,onClick, false, 0, true);//弱参照 function onClick(Evt:MouseEvent) { //処理 parent.removeChild(this); removeEventListener(MouseEvent.CLICK,onClick); this= null;//ここでエラー }
>>747 thisは常に自分自身を差さないといけないから一切の代入は出来ない
どのみちメンバ関数抜けたらthisの参照先は勝手に変わるのでthisの参照先を変える必要がない
Sprite上に100個くらいの重なりあったボタンがあって、 それぞれのボタンの挙動はbtnクラスを作って「基本クラス」として 割り当てています。 ボタンにマウスオーバーしたら最前面へ移動、 マウスアウトしたら、元の深度(Index)に戻るようにしたいです。 深度の概念があるAS2までは難なくできてたのですが、 AS3だとIndexを取得する方法がgetChildIndexしかないようですが、 子(ボタン)自身で振る舞いを記述する場合、 parent.getChildIndex(this); parent.setChildIndex(this); のような書き方で指定するのは、 AS3の流儀として妥当なのでしょうか?
752 :
Now_loading...774KB :2011/02/23(水) 15:36:31.59 ID:RBKVKtow
FlashBuilder 4.0でアプリを作っているんだけど、 グラデーションをどうやって適用するのかわからない MXMLを手書きしないとダメですか?
>>751 何事も動けば問題ないんじゃない?
ただ、それだと前のindex保存>戻す間にその他インスタンスの重なりが変わって来ると面倒になりそうだけど。
>>751 自分も初心者ですがが、
ちょうどそれと同じようなことをしています。
1.ボタンAにマウスオーバー
↓
2.ボタンAを最前面に移動
↓
3.ボタンBをマウスオーバー
↓
4.ボタンAをもとのindexに戻す ←この手順を間違うとぐちゃぐちゃになる
↓
5.ボタンBを最前面に移動
一応、indexを記録しておく方法をメインに進めましたが、
ボタンをaddChildする直前のstage.numChildを記録しておき、
for (var i:int = 0; i < buttons.length; i++) {
buttons[i].setChildIndex(記録しておいたstage.numChild + i);
}
というような仕組みも用意して、何か不備があったときには
これで無理やり整える、というような形にしました。
ボタンBの選択と、ボタンAを元のindexに戻すのが同じタイミングなら、
元のindexを覚えておく方法で問題はないはず、
……と思います。
ActionScript3.0で質問です。 SimpleButtonを拡張したクラスを作ったのですが そのクラスをnewすると表示はされるのですがボタンとして機能しません クリックしても何も起こらないし、useHandCursor=trueなのにマウスポインタも変わりません なにが原因か教えていただけないでしょうか? var test:MatrixButton=new MatrixButton(); addChild(test); ---------------------------------- import flash.events.MouseEvent; import flash.display.Shape; import flash.display.SimpleButton; class MatrixButton extends SimpleButton{ private var _lightOn:Shape; private var _selected:Boolean; public function get selected():Boolean{ return _selected; } public function MatrixButton(){ _lightOff=new Shape(); _lightOff.graphics.beginFill(0x0); _lightOff.graphics.drawRect(0,0,24,24); _lightOff.graphics.endFill(); upState=_lightOff; _selected=false; addEventListener(MouseEvent.CLICK,_onButtonClick); } private function _onButtonClick(mouseEvent:MouseEvent):void{ _selected=!_selected; } }
>>755 hitTestStateを設定しないとマウスイベントやキーボードイベントに反応しない、と公式リファレンスにある
757 :
755 :2011/02/23(水) 18:44:30.65 ID:8VfOR2CE
>>756 ありがとうございます!
超初歩ミスですみません
2.0であれほど学んだのにその考えに至りませんでした
多謝
758 :
Now_loading...774KB :2011/02/23(水) 18:45:19.26 ID:tsGuYw/4
画像img1〜img10を右から左へ移動させたいのですが、下記のようにするにはどうしたらいいでしょうか? img1 img2 img3 ....img10 img1 img10のあとにすぐにimg1が流れてきてイメージ的には一本の線のようになっている形です。 アマゾンのくるくるウィジェットみたいなものをイメージしていただければと思います。 現在は下記のようにしてimg10._xがimg10._height以下になったらループするようにしています。 img1._x -= 5; img2._x -= 5; ... img10._x-= 5;
>>751 自分なら、ボタン側じゃなくて、parentのクラスかメインクラスに関数をつくり
それを実行するかなあ
親ならすべての子を把握するのも容易いし、親だけが子を操作するようにしとけば
子が勝手に暴走することもないと思う
一般的にスプライトやムービークリップを多数表示させるよりはBitmapDataにdrawしたほうが軽くなるの?
761 :
669 :2011/02/24(木) 07:10:06.69 ID:yIzAvnBl
>>670 本当にありがとうございます!!
遅くなりましたがやっと解決できました。
何方かのお役に立てることを願ってメモしておきます。
3行目に気付くまでかなり悩みました汗
ボタンのインスタンス名をbtn0〜btn19の連番に。
hrt = new Array (略);
for(i=0;i<20;i++){
this["btn"+i].num = i;
this["btn"+i].onRelease = function(){
sbl(hrt[this.num]);};
};
flex 3.5ってどうやったら、スクリーンショット撮れるの?
763 :
Now_loading...774KB :2011/02/24(木) 09:40:42.03 ID:3yfhBSIj
失礼します。Flash CS5、AS3を使っているものです。 最近からAdobe Flashを使い始めました。 配列について質問です。 addChildを使って生成した複数のインスタンスを配列に格納して管理しているのですが、 別のシーンに移動し、再びインスタンスを生成したシーンに戻ってきたとき、 配列がリセットされてしまっています。 「タイムライン上でaddChildを行う方法だと無理だから 新たにクラスを作る必要がある」 というアドバイスをもらったので、一時記憶用のクラスを作って、 「複数のインスタンスを生成」するシーンから別のシーンへ移動したり、戻ってきたりしたときに 配列の受け渡しを行うようにしようと考えました。 が、うまくいきません。 以下がソースです。 「最初」のシーン。このシーンに戻ることはない。 var tmpObjects:TmpObjects = new TmpObjects(); 「複数のインスタンスを生成する」シーン 別のシーンに移動するとき tmpObjects.setObjects(objects.concat()); 別のシーンから戻ってきたとき objects = tmpObjects.getObjects(); 続きます
764 :
763 :2011/02/24(木) 09:41:21.15 ID:3yfhBSIj
続きです 一時記憶用のクラス package { public class TmpObjects { private var objects:Array = new Array(); public function TmpObjects() { } public function getObjects():Array { return (objects.concat()); } public function setObjects(inObjects:Array):void { objects = inObjects.concat(); trace("setObjectsで入力された配列の要素数", inObject.lngth); //inObject.lngthはundefinedになってしまう。 } } } 以上です。 もしかして、シーンを移動するときに複数のインスタンスが無くなってしまうので ご存じの方、よろしくお願いします。
FlashCSの方の挙動がよくわかってないから間違ってるかもしれないけど、 シーン移動の度に、クラスがnewされているってことじゃないの? 全シーンを通じてインスタンスが存在するクラスじゃないと、 一時記憶用のクラスとして使えないし、そこに入れる要素も同様って事だと思うんだけど。
766 :
763 :2011/02/24(木) 12:02:43.38 ID:3yfhBSIj
>>765 どうもです。
初期化をするシーンがあって、そこでnewをするようにしています。
実際、シーン移動のたびにnewされてはいないようです。
シーンが変わっても残り続けるように、
複数のインスタンスも一時記憶用のクラスのインスタンスも、
stage.addChildをしておきました。
複数のインスタンスの表示・非表示はvisibleをいじることで実装しているので、
stageの子として残ってはいます(visibleをtrueにしたままだと画面に表示され続ける)。
配列の中にはアドレスが記録されていると思うのですが、
もしかして、シーンが変わるとアドレスが書き換えられるのでしょうか?
まずaddChildは表示するためだけのメソッドだってわかってるよね? シーンを移動しようがしまいがたとえばドキュメントクラスの配列は残るんじゃないの? その配列にいままでaddChildしたDisplayObjectをいれておけば シーンを移動することで表示がすべて消え、かつシーンを戻ってもきえたままだとする(しらんけど) それならさっきの配列に入ったDisplayObjectを順番にaddChildすればいいとおもう その配列にアクセスできなくなっちゃってるの?
>>764 lngthじゃなくてlengthだと思うが、これは書き写し間違い?
まだ何やりたいのかよくわかってないんだが、クラス使ってるんだから
初期化等々に、「シーン」使わないほうがよくね?
タイムライン上であれこれしないほうがいいって言われたんじゃないのか?
おそらく、「やりたいこと」に対して「方法」が適切じゃないと思われるので
まずは「具体的に何をやりたいか」を書いてくれたほうが解決するかも
AdvancedDataGridのヘッダー項目に3列表示するにはどうするのよ? 教えてエロい人
>>764 undefinedだから、
>>768 が言うとおり、
>lngthじゃなくてlengthだと思うが、これは書き写し間違い?
が問題じゃないんか?
インスタンスが作り直されるってんならスタティックプロパティにいれるとかどうだろう
FlashCSでのフォルダ構成についてなんですが、 クラスの.asをflaと同フォルダ、もしくは下位のフォルダに入れる場合の指定方法はわかるんですが、 flaファイルより上のフォルダのクラスasを読みに行く事って可能なんでしょうか。 includeのasなら「include "../../hoge.as"」などで読みに行けるのですが・・・。 例えばflashという名前のフォルダにscrフォルダとprojectフォルダを作り、 scrフォルダにはas、projectフォルダにはflaファイルをまとめて置いておきたいのです。
774 :
763 :2011/02/25(金) 07:03:07.49 ID:y18HVT1N
>>768 >>770 ソースコードにも、lngthと書いていましたw
すみません。実行したところ、通りました。
その他にもちらちら問題があったのですが、
無事解決しました。
絶対にスマートではないやり方ですが、
stage.addChildをした状態でvisible = falseにして別のページへ行き、
戻ってきてからvisible = trueにする方法にするとできました。
ちなみに、stage.addChildとstage.removeをする方法ではなぜか無理でした。
次にこういうやつを作るとしたら、タイムライン上に配列をnewするような方法は避けます。
ありがとうございました!
>>771 スタティックプロパティ?
気になるのでちょっと試してみます
おすすめのおもしろいライブラリおせーてー
3.0でBitmapData.perlinNoiseで第9引数offsetsをエンターフレームで動かしたいのですが、重くて話になりません。第3引数は3なのですが、エンターフレームでパーリンノイズの生成は現実的ではないのでしょうか どのようにしたら大体同等な表現をえられるでしょうか
777 :
Now_loading...774KB :2011/02/27(日) 00:31:25.36 ID:ZMAt6b6l
こんにちは。 質問です。 環境 flash professional cs5 as3.0 ニコニコ動画のようなプレイヤーにコメントできるものを作りたいのですが 字幕をプレーヤーに表示させるのはxmlなどでできることはわかったのですが ユーザーにコメントを投稿させてプレイヤーに表示させるには どうすればいいのでしょうか? どういったASのコードを使えばいいのかなどをお教えいただければ幸いです。
あれら字幕というか、テキストかなんかをvideoplayerの上にaddしてるんじゃないの
779 :
Now_loading...774KB :2011/02/27(日) 11:52:18.76 ID:ZMAt6b6l
テキストかなんかをvideoplayerの上にaddする方法はどうすればいいのでしょうか?
>>779 VideoPlayerより上にSpriteとかaddして、そこにaddすれば?
781 :
Now_loading...774KB :2011/02/27(日) 17:04:13.69 ID:ZMAt6b6l
ユーザーに投稿させたコメントをテキストに保存させるということでしょうか?
普通はサーバ側のDBとかに保存だろうな。 まさかクライアント側だけでできるとか思ってないだろうな。
783 :
Now_loading...774KB :2011/02/27(日) 17:28:21.66 ID:ZMAt6b6l
なんか伝わってないな。 実際の再生時の流れ ・ビデオプレーヤー上に流すテキストをサーバから取得 ・ビデオプレーヤー上にSpriteなりを作ってadd コメント投稿時の流れ ・コメントをサーバに送信 ・サーバがコメントを保存 ってな処理が別々に存在してるのはわかる? サーバにテキストがあればコメントが流せるってわけじゃないぞ? で、コメントをテキストに保存する処理ってのは、 ActionScriptじゃなくて、PHPとかJavaとかのサーバ側のプログラムで行うわけ。 まさかPHPでどう書いたらまで聞くつもりなの??
>>783 画像付きのって、単にマルチしてるだけじゃねーか
ま、それはともかく、Flash抜きに、サーバーサイドスクリプトで掲示板とかチャットとかを
作れる、もしくは設置出来るのかどうか?
もしムリなら、ASの前にいったんそっちを解決するべき
>>785 それができたらこんな質問にならないと思うの
とりあえずCGI置けるレンタルサーバー探すんだな
787 :
Now_loading...774KB :2011/02/27(日) 21:21:23.00 ID:ZMAt6b6l
みなさんご回答ありがとうございます。
>>784 ユーザーが投稿するテキストフィールドにユーザーが投稿したコメントを
サーバに送信するのはそうすればいいのでしょうか?
ASでやるんですか?
>>787 URLLoader.load(URLrequest)
789 :
Now_loading...774KB :2011/02/27(日) 22:34:03.91 ID:ZMAt6b6l
なるほど あと、プレイヤーに表示されるコメントを一定時間で消えたり、 右から左に流れるようにしたりするためには 何を使えばいいのでしょうか?
とりあえず君は全てを求めず、検索して一個一個やってったらどうかね。 動画の再生、サーバーとのテキストのやりとり、テキストの表示。 全部理解して始めて出来んのに、まとめてなんでも聞けば作れると思うな
>>789 ビデオ表示するところまでできるならそれくらいできるだろ。めんどいならライブラリ使え
お前らよく相手してるな
GPU意識してAS書かなきゃならんの? NVIDIAとAMDでアーキテクチャ違うと思うんだけど
Adobe 曰く 「基本的にライブラリ(Altanativa3D, Flare3D とか)を使ってね。」 とのこと。
ライブラリが対応してくれるわけか
3Dは立方体すら書けないほど疎かったが、勉強し出すべきなのか。
>>797 入門用にPapervision3Dがお勧め。
ライブラリ導入が面倒なら、wonderfl.netで練習という手がある。
あと、現代のグラフィック系プログラミングは数学(幾何&解析)が必須。
799 :
Now_loading...774KB :2011/03/01(火) 21:03:04.27 ID:REs3LvVy
Adobe Flash Builder 4 Standardを使っている者です。 超簡単な掲示板を作ろうとしています。 スクリプトをどう書けばいいか分かりません。 書き方を教えてほしいです よろしくお願いします。
800 :
799 :2011/03/01(火) 21:06:14.54 ID:REs3LvVy
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009 "
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="620" height="584">
超簡単だとしても、サーバ側の別のプログラムがひつようなんだけど それはOK?
802 :
799 :2011/03/01(火) 21:08:55.79 ID:REs3LvVy
いや、まだ用意できていません。 すみませんでした。 もっと自分でやってみます。 すみません。みなさん。
デザインパターンってつかうもんなの?
いろいろ作ってると、こういう場合はこう作るってのが、 各個人でいろいろ出来てくると思うけど、 それが大体デザインパターンに当てはまってることが多い。 オブザーバーとかファクトリー、アダプターはしらんでも使ってるんじゃ無かろうか。
swfってプラットフォームによらず見れるんだよね ってことはバイナリコードではないの?
>>805 swf 自体は avi とかが音声や動画、その他歌詞情報やタグなどを包み込むような、「コンテナ」に近い。
また、ActionScript もネイティブコード、つまりバイナリコードで埋め込むわけではないので、
swf はバイナリコードではない。
swf が包み込むものは、ベクター・ラスター画像や ActionScript (を変換したもの) やメタデータ。
(メタデータは google とかの検索などで使われるのを狙った html でいう meta タグのようなもの)
そして、ActionScript はバージョンによって埋め込みが違って、html で例えるなら
1.0/2.0は
<swf>
<push>varName</push>
<push>varName</push>
<getVariable />
<push>1</push>
<add />
<setVariable />
</swf>
の様に、コンテナの機能に ActionScript を操作できるものが用意されている。
また、3.0 なら
<swf>
<as3>
Lyog6KaL44Gh44KD44GE44KE44KT44CCICov<!-- 省略 -->
</as3>
</swf>
の様に、AVM (ActionScript Virtual Machine) 上で動く「中間コード」が埋め込まれる。
このデータは ABC (ActionScript ByteCode) 形式で埋め込まれるが、CPU が直接読み込めるものではなく AVM がそれを解析している。
なので、ActionScript もバイナリコードで埋め込まれているわけではない。
>>806 詳しくサンクス
html5と比べて利点ってなに?
って考えた時に
htmlなんてタグの集まりだろ
コンパイルしてある機械語のswfのほうが解釈しないしいろいろ速いだろ
って思ったけどやっぱし違うかー
じゃあ利点何だろ
いずれとって食われるのかな
少なくとも今の段階でFLASHの方が機能や自由度、総合的な制作環境の整備が段違いだし、 HTML5はそうそう機能のアップデート出来ないだろう。 単純に住み分けになって、簡易的なのはHTML5になるだけじゃね。
>>807 一応、html の様なテキストベースでのタグではなく、png とかのチャンク構造とほぼ一緒。
プレイヤーがどんなパーサー組んでいるかに寄るが、
閉じタグ省略処理とかの構文が甘く、読み込んだときにそれを含めてパースしなければいけない html よりは、
既にちゃんと決まった構造で既にコンパイルされている swf のパースは速いと思う。
同じく、ActionScript も JavaScript と比べて事前に中間コードにコンパイルされている分、速いかな。
これもそれぞれの実装に寄るが。
html 5 と比べたときの利点は、
>>808 が言った事とか、
後は、既に固まっている仕様だから対象バージョンさえ間違わなければ大抵の環境で動いてくれる事かな。
ちょうど一部の人にとってはホットなネタだな。
(11 の stageVideo/3D はどこまで環境による差異を埋められるか気になる。)
810 :
Now_loading...774KB :2011/03/07(月) 13:51:52.01 ID:+wUzA3Mu
loaderで読み込んだswfを複製したくて 複製したいswfにクラス名をしっかり付けて e.target.content.constractorでclassを取得してnewしているのですが Flash10で実行した場合は大丈夫なのですが AIR2.5で実行すると複製できないようです(汗 CS5+Windows7です。 AIRで外部swfを複製することは不可能なのでしょうか??
swfを複製するのか、 swfの中にあるclassのインスタンスを複製するのか
ASに限った話じゃないのかもしれないけど プロパティのインターフェイスみたいなのってないの? a,b,cっていうプロパティをもってることが必須ですよ みたいな 継承だとやっぱり1つのクラスからしかプロパティ引き継げないよね
ActionScriptだとInterfaceでもset,getを定義できるんだから、プロパティを定義しているのと同等だとおもうんだが。 public interface IProp { function get prop():String; function set prop(val:String):Void; } JavaならInterfaceで変数を宣言できんこともないが、プロパティではないな。
>>813 なるほどsetter/getterか
普段使わないから思い至りませんでした
多謝!
nowTime = new Date(); nowYear = nowTime.getFullYear(); nowMonth = nowTime.getMonth(); nowDate = nowTime.getDate();, //日付表示テキスト moonTx = +nowDate + "." + (nowMonth+1) + "." + nowYear; 上記のスクリプトでnowMonth部分を数字ではなく英字表記にしたいんですが 下記の文で if で代入すると表示してくれません。 MonthE = if(nowMonth+1 == 1){"Jun"} else if(nowMonth+1 == 2){"Feb"} … moonTx = +nowDate + "." + (MonthE) + "." + nowYear; なにか別の方法でもよいので日付を英字で表記する方法を教えて下さい。
>MonthE = if(nowMonth+1 == 1){"Jun"} >else if(nowMonth+1 == 2){"Feb"} >… そのif文はどこで習った?
FlexならDateFormatterつかったが早い。 AS3なら、 月は var mlist:Array = ["Jan","Fex","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; var dt:Date = new Date(); trace("月:"+mlist[dt.month]);
■環境:Adobe Flash Builder 4 現在Actionscriptプロジェクトでコードを記載しています。 BorderContainerクラスを使用したいと考えていますが、 import spark.components.*;をするとエラーになってしまいます。 色々検索してみたのですが私の拙い知識では Flexプロジェクトを使ってmxmlを使わないと BorderContainerクラスを使用できない"らしい"ということまでしかわかりませんでした。 ■ご質問 @BorderContainerクラスを使いたい場合はFlexプロジェクトでmxmlでコードを書く必要がありますでしょうか? AActionscriptプロジェクトのみでBorderContainerクラスを使うことは可能でしょうか? よろしくお願い致します。
大前提としてクラスパスにそのクラスファイルあるの?
as3で、文字列から動的に関数の呼び出しをしたいのですが、方法はありますか? var hoge:string = "hogeFunc"; function hogeFunc(){ trace("a") } のように、どうにかhogeFuncを呼び出したいです。 AS2だとeval関数とかあったようなんですが・・・。
>>821 おおお・・・。勝手に変数の指定しか出来ないと思ってたけど、関数もいけたのですね。
かなりコード簡略化出来そうです。ありがとうございます。
823 :
Now_loading...774KB :2011/03/16(水) 02:41:32.48 ID:9kVKEa+k
環境) AS3,FlashCS4,XP-Pro オブジェクトの操作をVTR再現のように戻したりやり直しする方法で悩んでいます。 ドラッグ可能なMCのAとB(mcA, mcB)が親MC(oyaMC)の中に入っていて、mcAまたは mcBを動かす度に記憶をして再現したいのです。 ※出来ればCS4のタイムラインのように時間軸(フレーム)で丸ごと再現したい。 例えばmcAを○,mcBを■として、お互いの位置関係がoyaMCの中で [ ○ ■ ] → [ ○ ■] → [ ○■ ] → [ ■○] → [ ○ ■ ] となったとき、映画のコマのようにそれぞれをシーンで記録し、任意の時間位置 で再現したいです。 ※戻る・進むボタンのように 試しに配列(mcByTime)を用意し、そのインデックスを時間軸とみなして各操作毎に mcByTime[index] = oyaMC; と放り込み、ある時間のoyaMCを addChild(mcByTime[x]) でステージに配置しようとしましたが同じもの(最後に操作した状態)しか現れません。 どうしたものでしょうか? パラメーターで描画したり位置を設定したいところですが、実際に適用する案件では ステージに何十もの部品(この個数自体も変化する)があるのでとても全部を引数で 指定することは出来ません。 またMovieClipクラスはそれ自体がタイムラインを持っていますが、各フレームに状態 を放り込む方法が分かりません。 平たく書くと、ASのみでCS4のタイムライン履歴を取りたいということです。 分かりにくいかと思いますが宜しくお願い致します。
>>823 記録するという発想は悪くないと思う
だけど、mcByTime[index] = oyaMCとやっても、oyaMCへの参照が入るだけだよ?
その時間の位置やAmcなどの位置情報が記録されるわけじゃない
大事なのは、「ある時間のoyaMC」にaddChildされてる「AとBの位置」を
記録することでしょ?
なら、そのように処理を組むべき
具体的な構造がわからないから断定はしないけど、何十もの部品があっても記録は可能なはず
そして、タイムラインとの併用は混乱するのでおすすめしない
配列に var hogeArray:Array= new Array(); var count:int =0; ドラッグ開始でエンターフレーム開始 EnterFrame内で hogeArray[count]["x"]=mc.x; hogeArray[count]["y"]=mc.y; count++とかやれば毎フレームのmcの位置が連番で保存できる。 あとはEnterFrameとかで引っ張り出せばいいんじゃない?
827 :
823 :2011/03/17(木) 23:49:46.08 ID:iXoNsKdY
>>824-826 非常に困難なこの時期にレスありがとうございます。
>>824 お教え頂いたリンクというよりは、Adobeソフトで言うところの(やり直し)「Ctrl + Z」や
(繰り返し)「Ctrl + Y」の実装方法を知りたいです。
なので824さんの最後の行が要望に一番近いです。
>>825-826 ここでの質問は簡略して2個のオブジェクトの位置のみで例示していますが、実際は
部品の点数が多いうえに種類も多いです。位置の他、色もあり、グラデーションの
パラメーター(角度やオフセット)もあります。
つまり街で言うなら、車もあり鳥もあり、エンジン音もあり翼の模様もありという感じです。
あと本で読んで知ったのですが、Flex4のステート機能も要望に近いです。
828 :
Now_loading...774KB :2011/03/18(金) 01:08:49.18 ID:BoyG+NrJ
>>827 たくさん要素があるなら、そのすべてを記録すればいい
もちろん一行のASですむようなもんじゃないが、難しいことじゃないっしょ
メモリ気にしてるのかね まさにオブジェクト思考の使いどころって気がするんだけど
結局どうやったって無規則な動きを再現しようとしたら全ての全状態を保存するしかない。 例えばmcをまんま配列に突っ込んでたみたいだけど、それが可能だったとしても状態保存より大量にメモリ使うだけだろう。 削減したいなら簡略化できる値は出来るだけ数式化出来るようにして、 起点と終点保存しといてそっから割り出すとか、グループ化して他との相対で動かすとか。
Undo・Redoを実装するのにある時点の全状態を保存するってのはリソース食うわな 直前の状態から変化したパラメータの値だけを保存するのがいいんじゃないかな
>>831 意味がわからん
オーサリングツール使ってないならまず画像を読み込まなきゃならないんじゃない(ローカルってもWeb上だとサーバーにアップしなきゃならないし、クライアント側が見てるswfには画像データはないから結局通信がいるかと)
1.画像読み込み(Loader)
2.画像を切り分けてbitmapdataに
3.bitmapに格納
4.MovieClipの各フレームに配置
どれが分からないの?
RTMFPのNetGroupの実装で悩んでいます。 NetGroupを使った際の同じグループ内のメンバーのリストについてなのですが、 NetGroupのプロパティーなどを見てもリストらしきものが見当たらないのです。 もしかして、グループ内のメンバーのリストは自前でつくらせるしか無いのですか? 遅延とか大規模切断とか考えると、自前でリスト化できる気がしないので、 スマートな方法でどうにかなる方法はないのでしょうか?知っていたら、おねがします。
>>834 NetGroup の仕組み的に全員のリストを保持していないよ。
addMemberHint() とかで追加できるが、必要じゃないなら破棄されるから、
NetGroup 自体の仕組みで行う事は不可能。
サーバーを用意させて入退出を管理させるのが一番安定すると思う。
もしサーバーを立てられないなら、独自に NetGroup 内でメンバーリストを伝え合うしかないかな。
参加するときに直接つながったり、直接つながっていたメンバーが抜けた事は大抵ちゃんとイベントで取れるし、
念のため定期的に neighbor に ping 的なものを送りつけて生存を確認すれば大丈夫かと。
切断された場合はそれを post してバケツリレーするような感じに。
>>835 ありがとう、やっぱりその方法しか無いんですね。
サーバー落ち時のバックアップネットワークとして組み込もうかと考えてたけど、
仕組み上の違いに戸惑っていて、頭痛いです。
ActionScript+Flexのアプリケーションで、 スクリーンショットをとれないようにする必要があります。 デスクトップアプリ(Airアプリ)で実現できればよいです。 なにかよい方法がないでしょうか。 PrintScreenキー,ALT+PrintScreenキーを無効にして スクリーンショットがとれなくする方法を考えたのですが、 実現方法が調べても分かりません。 よろしくお願いします。
838 :
Now_loading...774KB :2011/03/20(日) 17:30:28.97 ID:02duKZ0f
完全に防止することは不可能。 enterFrame で * Air 1.0 or FP 10 以降なら Clipboard.generalClipboard.clear(); * FP 9 以前なら System.setClipboard(" "); とすれば、クリップボード上のデータを消すことができるが、 タイミングによっては消せなかったり、クリップボードを介さないスクリーンショットソフトでは意味がない。 しかも若干重い上に、この Flash が動いている間、文字のコピペを全くできなくなってしまう。 仕組み上どんなにやっても禁止することは出来ないので、 そういうコンテンツは出さないとするか、Flash 以外の方法で供給することを考えるしかない。 いっその事、スクリーンショットを取る人を盗人と考えるのではなく、コンテンツを広めてくれる宣教師だと思い、 どんどん撮ってもらうと考えるのもありかと。
839 :
834 :2011/03/20(日) 20:54:23.86 ID:f3ooL54G
P2Pは配信・P2P通信専用で、メンバーのリストはロビーサーバーを作ることで解決することにしました。 やっぱり、これが一番簡単で安定させやすいですよね・・・。 おさわがせいたしました。
>>837 現状のどんなプラットフォームでも、
スクリーンショットを防ぐ手立てはないよ。
841 :
837 :2011/03/21(月) 18:11:18.13 ID:43VMC6uO
>>838 ,840
どうも貴重なご意見ありがとうございます。
会社からの要求なので、
スクリーンショット仕方なし
と考え方を変えれば済む訳ではありません。
また、スクリーンショットを
完全に防止する必要もありません。
(少し操作してみて出来なければそれでよい)
例えば、C++ならば次のような対処方法があるそうです。
PrintScreenキーを無効にしてスクリーンショットを無効化する
ttp://d.hatena.ne.jp/A7M/20101227/1293416030 よろしくお願いします。
1.KeybordEvent取ってPrintScreenキーが押されたか調べる 2.押されてたら Clipboard.generalClipboard.clearData()で画像形式を指定して消す 簡単にやるならこんな感じ? そのアプリがアクティブじゃないと効かないと思うけど
>>841 >>842 それやるならアクティブではない場合、フォーカスがあるかどうかを検知して、
画面の表示を黒いムービークリップで覆うなどして、表示を消せばいいよ思うよ。
ただ、残念ながらAirにもFlashにも、PrintScreenキーのキーコードがない。
色々試してみたんだけど、他のキーは全部キーコードを検知するけど、
キーボード上で唯一、PrintScreenキーだけは検知されない。
Whindowsキーや半角/全角すら検知するのに、変だよね。
>>843 Air なら大丈夫だから良いけれども、
web 上のでは、ブラウザによって Flash 上の(de)activateイベントがしっかり働かず、
JavaScript でフォーカス取るにも、get/setFocus() が効かなかったり…
>>841 いや、残念ながら、C++でも簡易的に防いでるだけ。
あなたの参考にしたサイトでも、運用ポリシーで補う必要があるって書いて有るでしょ。
結局
>>840 ってこと。
846 :
Now_loading...774KB :2011/03/23(水) 13:04:30.41 ID:/nvPDTNW
Progressionのコマンドパターンを参考にしたいのですが、拡張したprogression のクラスってどこに保存されてるのでしょうか?
848 :
924 :2011/03/25(金) 20:36:10.65 ID:9RpxpEXj
>>846 そのサイトの商品を買えばいいと思うよ。
もし作りたいなら、BitmapDataクラスを使えばできる。
ただ、開発と最適化が厄介だと言っておく。買ったほうが早い。
あ、名前外すの忘れてた。
まだ全然慣れてないから上手い事扱えてないけど、そうめんライブラリなかなかおもしろいね。
851 :
Now_loading...774KB :2011/03/26(土) 19:51:46.72 ID:2RA46mL7
<mx:Form x="60" y="39" width="364" height="271"> <mx:FormItem label="表示"> <s:TextArea editable="false" id="area"/> </mx:FormItem> <mx:FormItem label="書き込み"> <s:TextInput id="input"/> </mx:FormItem> <mx:FormItem label="ボタン"> <s:Button label="OK" id="ok" click="ok_clickHandler(event)"/> </mx:FormItem> </mx:Form>
852 :
851 :2011/03/26(土) 19:53:02.32 ID:2RA46mL7
import mx.controls.Alert; protected function ok_clickHandler(event:MouseEvent):void { area.text +=""; } area.textから何を書けばいいか分かりません。 どなたか教えてほしいです。 よろしくお願いします。 超簡単な掲示板を作っている所です。
853 :
851 :2011/03/26(土) 19:54:34.85 ID:2RA46mL7
<fx:Script> <![CDATA[ import mx.controls.Alert; protected function ok_clickHandler(event:MouseEvent):void { area.text +=""; } ]]> </fx:Script> <fx:Declarations> <!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 --> </fx:Declarations> <mx:Form x="60" y="39" width="364" height="271"> <mx:FormItem label="表示"> <s:TextArea editable="false" id="area"/> </mx:FormItem> <mx:FormItem label="書き込み"> <s:TextInput id="input"/> </mx:FormItem> <mx:FormItem label="ボタン"> <s:Button label="OK" id="ok" click="ok_clickHandler(event)"/> </mx:FormItem> </mx:Form>
>>850 面白いと思って調べたら、利便性がそれほどでもなかった。
スレッドっぽい動きなだけで、スレッドというには・・・。
スレッド分けを他の言語でやったことがある人には、歯がゆいだけ。
他言語と比べても意味ないだろう・・・。 as開発の中で普段よりいかに管理が楽になるかが重要なんであって。 まぁあんま中身見てないからなんとも言えないけど。
AS3のBitmapについて質問です var bmp_data:BitmapData = new BitmapData(10 , 10 , true , 0x00000000); var bmp:Bitmap = new Bitmap(bmp_data); stage.addChild(bmp); 上記で配置した後、bmp_dataの中身を変えたい場合は stage..removeChild(bmp); した後また bmp_data= new BitmapData( 10 , 10 , true , 0x00000000); bmp= new Bitmap(bmp_data); stage.addChild(bmp); で、問題ないでしょうか?毎回newしているところとか。 また、他に直接変えられるような記述ありますか?
>>856 var bmp_data:BitmapData = new BitmapData(10 , 10 , true , 0x00000000);
var bmp:Bitmap = new Bitmap(bmp_data);
stage.addChild(bmp);
--------------------------
差し替えるBitmapDataを作ったら
var bmp_data2:BitmapData = new BitmapData(略);
1.BitmapのbitmapDataプロパティにBitmapDataオブジェクトを代入する
bmp.bitmapData=bmp_data2;
2.Bitmapに関連づけられてるBitmapDataオブジェクトの中身を変える
bmp_data=bmp_data2;
どちらにせよ同じBitmapオブジェクト使うなら作業の合間にremoveChild()を挟む必要はなく直接変えられるよ
>>857 無事入れ替えることができました。ありがとうございます。
プロパティ調べる癖付けないとな…
win7、CS5体験版でas3.0使用です。 var hoge:String="a=b+1"; このhogeを命令文にする方法を知りたいです。 文字列をステートメントに変換ということをしたいのですが。
むりだとおもうー ちゃんと聞いたら代替案を出せるかもだけど 具体的になにをやりたいの?
>>860 テキストに処理や文章を記述して、配列に全部読み込んで、一行ずつ処理していく、という流れの中で、
処理が記述されている部分で、正規表現で命令文発見→分岐で文字判断で各命令へ、という方法でやってたのですが
ひょっとして直接文字列を命令に変換解釈させる命令文とかがあるのかなと思って。
やっぱ無理ですか・・・んでもレスしてくれてありがとう。
>>861 四則演算その他のメソッドつくっといて
正規表現で+を見つけたら前後の数字を引数にして呼び出しみたいなかねぇ
>>882 うお、わかりやすいです。
ありがとう、作り変えてみます。
最近ActionScript(AS3)を勉強し始めました。 できるかできないかの質問なのですが、2枚のjpeg(A,B)を1枚のJpegに構成したいのですが簡単に可能でしょうか? Aの画像の上に、B(レイヤー)を上書きして、画面に表示を行いたいと思っています。 Bの指定色を無色としてレイヤーのように画像を合成します。 よろしくお願いいたします。
>>654 できるよ
まずはActionScript入門wiki読んでBitmapDataクラスについて調べてみましょう
866 :
864 :2011/03/29(火) 13:27:20.15 ID:UKjQwQMh
>> 865 私に対する返信? ありがとうございます(^^ 調べてみますね。。
ユーザが作成したデータ(バイナリ)をサーバに送信(post)したいのですが。バイナリデータ以外にユーザ入力の 文字列のデータもサーバに送信する必要があります。 個々のデータを送信、受信の処理はできたのですが、両方のデータを一緒にサーバに送信する方法がわかりません。 ご存知の人がいましたら教えてもらえないでしょうか? //ここにバイナリデータが格納 var ba:ByteArray = ByteArray(); var myReq:URLRequest = new URLRequest(); myReq.url = CGI_URL; myReq.data = ba; //バイナリ以外に文字列のパラメータも一緒に送信する方法がわからない・・・・ myReq.method = URLRequestMethod.POST; navigateToURL( myReq, "_self" );
>>868 URLVariablesクラス使うとかかな
使い方は公式リファレンスの例見りゃ分かると思う
自分が格納されている配列と要素番号を要素から取得することはできますか?
できない
ありがとうございます
自分を格納してる配列名なんかをプロパティや多次元配列で突っこんどきゃいいんじゃないかな。
CS5のデバッガが起動しないで強制終了してしまう…orz プレイヤーは最新版で、デバック専用のプレイヤーなんだけど 通信しようとして落ちてしまいます。 どなたか同じ症状になって、解決した人がいれば教えてください。
SimpleButtonをプログラム上でクリックさせる事って出来ますか? javaのdoClickメソッドみたいな
>>875 勘だからほかにいいやりかたあるか知らないけど
イベント1を作ってイベント1を受け取ったら本来のやりたい動作をさせる
ボタンが押されたらイベント1を送信させる
スクリプト上でオンにしたいときはイベント1を送信させる
でできそうかな?
>>876 すいません、ちょっと質問の情報が少なすぎたみたいです
マウスで操作すると各状態の表示オブジェクト(upStateやoverState)が自動で切り替わるけど、
それらをプログラム上でも切り替わらせたいんです
SimpleButton.upState:DisplayObjectプロパティにdownStateで指定してるDisplayObjectを代入するのは? スマートじゃないかもだけど
Paintソフトを作成しているのですが、SpriteにaddChild()した親子関係のSpriteを結合することは できるのでしょうか?Undoを考えて、1クイック単位の書き込みを新しいSpriteを作成して、addChild() をしているのですが、さすがに量が増えるとよろしくないと思うので、古いのは親と結合したいのですが 可能でしょうか?
>>879 もうもどんなくていいならbitmapDataにdrawしちゃえば?
AS1.0を使っています。 swfを拡大・縮小すると座標に小数点が発生するんですが 例えばマウスカーソルが特定の座標にあるとクリアになるゲームを作る場合 if(_xmouse == ClearX && _ymouse == ClearY){ trace("クリアおめでとう!"); } このような分岐だと拡大縮小の具合によっては 小数点で完全一致しなくなってまずいんでしょうか?
>>881 多分まずい
そのASだと、カーソル側のちょっとした誤差すら許されないから、クリアするの難しくね?
特定座標の周辺まで含めた範囲内にカーソルがあれば、くらいの条件にしたほうが
いいと思うが
>>882 ありがとうございます
範囲広げてやってみます
Stringに他の変数の名前を入れてその変数を呼び出すことはできますか?
885 :
Now_loading...774KB :2011/04/03(日) 13:29:20.11 ID:jaJppB5W
var bool:Boolean = true; var num:Number = 0; num += (bool) ? 10 : 100; trace(num) // 10; この書き方で値が入らないことがあるんだけど、 こういう書き方できない?
>>885 できるはず・・・
他のところがおかしいんじゃない?
var hensu:String = "hoge"; var hoge:Boolean = true; trace (this[hensu])
>>887 なるほど、配列ってこういう仕組みになってたのか。
はじめて知りました。ありがとうございます
root[]にすればどこからでもすべての変数にアクセスできますかねぇ
this[]とか色々あって範囲がよくわかりません
絶対パスと相対パスの違いはあるけど どっちにしろスコープ内じゃないといけないんじゃじゃないかな
progressionはここでいいんでしょうか 画面切り替えにフェードなどのコンポーネントを使ったんですが、 切り替わる瞬間に一度(1フレーム?)全画面が表示されてから消えてフェードインしてしまいます スムーズにフェードインさせるためにはなにかしなければならないことがあるんでしょうか
Spriteのgraphics.lineToなどでマウス移動のラインを書くときに、 指定領域のみを書き込み可能(キャンパス内だけ描ける)という処理をしたいのですがどのようにすればよいですか? マウスを押しているときのイベントリスナー関数でマウスの座標をとってきて、領域内外の判断で一応は実装できますが、 ラインが太いときはキャンバスをはみ出したり、または、高速にマウスを動かした場合は、キャンバスの端まで描かれなかった ります。
>>892 ちょっとよくわからん
もうちょいくわしく
894 :
892 :2011/04/05(火) 17:59:56.06 ID:TMqksjBq
>> 893
こういうアプリみたいにキャンバス内だけに綺麗に書き込みが出来る処理をしたいと思っています。
ttp://www.kerpoof.com/#/activity/draw おおよそは以下のように描いています。
こうすると画面端の判定は出来ますが、ラインが太いときにキャンバスからはみ出る、
または高速でマウスを動かすと、drawingHandlerが呼ばれるタイミング?かで境界線近くが描画されない
現象がおこります。(当たり前ですが・・・・)
//マウスを押しているときに定期的に呼ばれる
protected function drawingHandler( e:Event ):void
{
//m_cCanvasRectにはキャンバスのRectが入っています
if(mouseX < m_cCanvasRect.x) m_bDragFlg = false;
if(mouseY < m_cCanvasRect.y) m_bDragFlg = false;
if(mouseX > m_cCanvasRect.x + ins_canvas.width) m_bDragFlg = false;
if(mouseY > m_cCanvasRect.y + ins_canvas.height) m_bDragFlg = false;
if(m_bDragFlg) {
//描く Sprite
m_cNowSprite.graphics.lineTo( mouseX, mouseY );
}
else {
//描かない
m_cNowSprite.graphics.endFill();
m_cNowSprite.removeEventListener( Event.ENTER_FRAME, drawingHandler );
}
}
895 :
Now_loading...774KB :2011/04/05(火) 21:39:19.86 ID:nEqMOCo1
canvasのサイズを指定しているよね? その初期化はしているよね?
>>895 はい、実際に書き込んでるのはm_cNowSprite (Sprite)ですが
サイズの指定は行っています。
m_cNowSprite.width = 600;
m_cNowSprite.height = 400;
でキャンパスのサイズは指定しているのですが、それ以外の領域にも書き込みを行います。
他に初期化が必要なのでしょうか?
>894 m_cNowSpriteにmaskか、他の子をかぶせるかして 表示領域を制限すれば良いんじゃない? あと、m_bDragFlg = false;の処理は描く・描かないの後で良い それと、895の言ってるのはたぶんm_cCanvasRectの事で 896のコードはやらなくて良い
flashdevelopeつかい始めたんですが、ボタン一つでセミコロンをかってにつけてくれたりインデントきれいにしたりしてくれる自動整形はできないのでしょうか? CSxにあるゆようなやつです
Flashdevelope最初に使ったときは感動したわ 便利すぎワロタ
すいませんもう3日も格闘中なので教えてください! youtubeAPIから動的に取得した動画の音を取得してイコライザーみたいに表示させたいのですが、 SoundMixerクラスは動的に作成されるサウンドオブジェクトは制御できません、 とリファレンスガイドに載っていて、実現できません。 このような事は実現できないのでしょうか!?それともSoundMixerを使わずに 何か別の方法で同じことをできないでしょうか??
ライブラリ総合スレってある?
質問です。AS3.0 コンポーネントの スライダーで、 値を取得するときは インスタンス名.value で値が取得できるのですが、 逆にセットしたいのですが、うまくいきません。 インスタンス名.value = 20; だとスライダーが無反応です。 trace(インスタンス名.value); すると値はセットされているようなので、その後何かする必要があるのでしょうか?
903 :
Now_loading...774KB :2011/04/08(金) 15:11:35.55 ID:MGO4dfHR
>>903 せっかくレスいただいたのですが意図がわかりません。
valueは初期値だから、後からスライダーの位置を変更はできないという意味ですか?
サンプルはスライダーの位置を取得しているものですし。
具体的にやりたいのは、
スライダー + テキストインプット を置き
テキストインプットで値を入力すると スライダーの位置を所定の位置に移動させる
ということをやりたいです。
値を入れた後、コンポーネントのdrawNow()とか実行すればいいんじゃね?
drawNow();でやってみます。ありがとうございます。
papervisi3dの質問でもよろしいでしょうか camera:Camera3D chara:DisplayObject3D chara.addChild(camera) して、キーイベントにchara.moveForward(60) エンターフレームに レンダラー.renderScene(シーン,camera,ビューポート) とし、charaを動かすとcameraも動くように(一人称みたいに)したいのですがうまくいきません カメラはDisplayObject3Dにのまとめて操作することができないのでしょうか?
Actionscript3.0です。正規表現の質問なのですが 例えば、 [Na(cryptand 222)]3Sb7 という文字列があった場合、 [Na(cryptand 222)]<sub>3</sub>Sb<sub>7</sub> というように操作する正規表現を作りたいと思っています。 要は、かっこの後ろ、または元素記号の後ろにある数字を下付きにしたいのです。 どなたかよろしくお願いします。
わざわざありがとうございます、とてもよく理解できました! 元素記号の部分はそこまで厳密にする必要はないので、 var str:String = "[Na(cryptand 222)]3Sb7"; str = str.replace(/(?<=[)}\]a-zA-Z])([\d\.∞]+)/g, "<sub>$1</sub>"); という感じで大丈夫でしょうか(Fe0.98Oや[C2H4]∞のようなものにもマッチするようにしました) 本当にありがとうございました!これで文字列操作が楽になりそうです!
911 :
Now_loading...774KB :2011/04/09(土) 21:16:22.10 ID:N3RZ6drS
AS3,WinXP,CS4 タイルリストでのマウス反応が取れません。 var dp:DataProvider; dp = new DataProvider(); と定義しタイルリストのアイテムにMCを設定しました。 dp.addItem({label:"MC0", source:mc0}); dp.addItem({label:"MC1", source:mc1}); ・・・ ・・・ これでタイルリストは表示されたのですが、リスト内の各MCは マウスクリックで addEventListener (MouseEvent.CLICK,onClick, false, 0, true); function this_onClick(evt:MouseEvent) { trace("mouseEvt= "+evt.target); } Trace出来るようにしているのですが何も出ません。 どうすべきでしょうか?
どこにaddしたの? 感数名違うのはなんなの?
913 :
911 :2011/04/09(土) 22:47:55.71 ID:N3RZ6drS
>>912 ごめんなさい。
各MCにaddEventListenerして(MCのタイムラインにaddEventListener〜を書いて)、
関数名はonClickです。
くわしく見ないとなんとも言えないけど 仮にそのMCを普通にステージに配置した時はイベント検知してる?
915 :
911 :2011/04/09(土) 23:15:21.57 ID:N3RZ6drS
>>914 問題のMCをステージに配置した時はOKですが、
TileListに組み込むと反応しなくなります。
>>915 はじめてコンポーネントさわってみた。
ほんとだね。
sourceのmcまでが複雑な階層になっててイベント届いてないか(そんなことありえないか?)、上書きされてるのかも
一応タイルリストのあるとこに
myTileList.addEventListener(ListEvent.ITEM_CLICK,func);
function func(e:ListEvent):void{
trace(e.item.source);
}
でクリックされたMCが取得できるみたいだから
e.item.source.onClick(new MouseEvent(MouseEvent.CLICK));
でMCに書いたハンドラ呼び出せるけど他に方法あるだろうなあ
Listクラス周りのリファレンス見るに、DataProvider内のデータをそのまま表示してるわけではなさそうだから そこら辺によるものじゃないかね
ActionScript初心者です。3.0を利用しています。
http://www.geocities.jp/flashiroha/motion/gallery/tweengallery.html ↑のページを見ながら記述していたのですが、
どれかのサムネイルをクリックすると画像はしっかり表示されるのですが
表示されると同時に、他のサムネイルのボタンモードが解除されてクリックしても反応されなくなってしまいます。
一体何が原因なのでしょうか・・・・。該当部分のコードは↓です。
function fade(event:MouseEvent):void {
if(event.target.name == "p1") {
gotoAndPlay(5);
} else if(event.target.name == "p2") {
gotoAndPlay(21);
} else if(event.target.name == "p3") {
gotoAndPlay(36);
} else if(event.target.name == "p4") {
gotoAndPlay(51);
} else if(event.target.name == "p5") {
gotoAndPlay(66);
}
}
p1.buttonMode = true;
p1.addEventListener(MouseEvent.CLICK, fade);
p2.buttonMode = true;
p2.addEventListener(MouseEvent.CLICK, fade);
p3.buttonMode = true;
p3.addEventListener(MouseEvent.CLICK, fade);
p4.buttonMode = true;
p4.addEventListener(MouseEvent.CLICK, fade);
p5.buttonMode = true;
p5.addEventListener(MouseEvent.CLICK, fade);
919 :
Now_loading...774KB :2011/04/10(日) 18:16:25.41 ID:WWwnxUjk
パブリッシュ設定は?
>>918 CS5,windowsXP
URL一番下のflaファイルをダウンロード
ファイル→パブリッシュ設定→Flash→Player(P):Flash Player10,スクリプト(S):ActionScript3.0に変えてOK
レイヤー1,フレーム目のアクションスクリプトを
>>918 でまるまる上書き
保存してパブリッシュ
でおそらく期待されている動作をするんだけど。
おなじようにやってみたらどうなる?
>>920 すいません、直らないようです、、、。CS5を使用しているのですが、バージョンによって仕様が違うのでしょうか。それと、
http://www.geocities.jp/flashiroha/motion/motion9.html ↑の講座もやってみたのですが、記述されている通りにやっていても
あるモーショントゥイーン内で3つのキーフレームをつくったとして、それぞれで別の位置、サイズやアルファ、着色を指定すると、
3つのキーフレームの位置が勝手に修正されたり、それぞれのキーフレームで設定したアルファや着色の設定が勝手にどれか一つのカラー設定に統一されてしまいます。
この現象は一体なんなんでしょうか、、、
>>921 とりあえず
>>920 の通りにやったflaとそのflaでパブリッシュしてうまく動かないというswfをセットでどっかにアップできる?
>>922 ええと、うpする前に、詳細を書きます。
>>920 見ながらやったんですが、フレーム1のソースが変化しませんでした。
AS3.0に対応させるための設定のようですから、AddEventListenerで記述された内容に
なっていなければいけないんですよね。それが原因みたいです。
パブリッシュ設定で何かやり忘れているのでしょうか・・・?
>>922 ごめんなさい!勘違いしてましたm(__)m
おっしゃるとおり、期待した通りの動作になりました。
これはつまり、スクリプトの記述は間違っていなかったってことですよね。
タイムラインの部分の記述が間違っているのか、、、先が思いやられる・・・
>フレーム1のソースが変化しませんでした。
??
DLしたflaは2.0で書かれてるからフレーム1のソースを全部消して
>>918 (3.0)を書く
3.0のコードなのでこのままパブリッシュはできないからパブリッシュ設定を変える(2.0→3.0)
って意味なんだけど、変化しませんでしたっていうのはいじれなかったってこと?
おや、入れ違い。 1フレーム目のコードは間違ってないみたいだね あとはstop();か、タイムラインがどっかずれてるか、インスタンス名くらいかねえ。
>>921 の現象もやっぱりflaみてみないとわかんないやー
>>926 ありがとうございます。
比較してたところ、キーフレームの挿入方法が間違っていたっぽいです
モーショントゥイーンのすぐ次のフレームを選択してキーフレームの挿入をすると
隣のモーショントゥイーンと連結されてしまうのが原因かな・・・
929 :
928 :2011/04/10(日) 20:47:47.07 ID:HGmxHdsE
>>929 レイヤー1,1-19フレーム目にはボタン代わりのMovieClipが置いてあり、インスタンス名がついている
20フレーム目以降にもボタン代わりのMCがおいてあるべきなのにビットマップになってるよ
だから20フレーム以降にいるときはボタンイベントが拾えていない
931 :
Now_loading...774KB :2011/04/10(日) 21:20:58.70 ID:Rj/1ltwZ
サーバ上のjpegファイルをロードして画面に表示させることをしています。
ローカルでのデバックで、strImgPathに任意のパス(サーバのjpegパス)を入れて
動作させると、正常に表示されるのですが、サーバにswfをアップして、ブラウザ
から見ると表示されません。どうしてでしょうか?
//m_loaderは、var m_loader:Loader = new Loader();
//strImgPathは、
http://xxxxx.jp/hoge.jpeg (自分のサーバの画像)
m_loader.load(new URLRequest(strImgPath));
m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, coHabdler)
//画像をロード後に呼ばれる
function coHabdler(evt:Event)
{
var bmd : BitmapData = new BitmapData(m_cCanvasRect.width,m_cCanvasRect.height);
bmd.draw(m_loader);
}
933 :
929 :2011/04/10(日) 21:43:15.61 ID:HGmxHdsE
>>932 ウボァー!おかげさまでできました!ありがとうございますm(__)m
アドレス先も参考にさせていただきます。
934 :
Now_loading...774KB :2011/04/10(日) 23:46:32.03 ID:WWwnxUjk
JavaScript側からFlashのメソッドにアクセスしようとするとエラーが出るんですが 一体何が原因だと考えられるのでしょうか FlashからJava側のメソッドへのアクセスはできます。 教本通りのコードで書いているのですが、何か間違った部分があるのか、わからない・・・ java側のアクセス設定部分のコードは↓ですが、これはちゃんと機能しています var params = {allowscriptaccess:"always"}; ASコードは↓です。 function externalDispNickname(nickname) { var tf:TextField = new TextField(); addChild(tf); tf.width = 600; tf.text = nickname; } ExternalInterface.addCallback("externalDispNickname", this.externalDispNickname); Security.allowDomain('*');
936 :
935 :2011/04/11(月) 12:12:57.73 ID:w4PnyLrc
使用環境はFlashPlayer10、WindowsVistaです。 ブラウザはFireFox、swfはasファイルとしてアップロードしています。 よろしくおねがいします。
エラーの説明って多少も出ないの?
938 :
935 :2011/04/11(月) 12:33:01.17 ID:w4PnyLrc
FireFoxで、FireBugというデバッガーを利用しているのですが、 Error calling method on NPObject! $("#externalSwfo").get(0).externalDispNickname(); と出てくるだけで、詳細を教えてくれません、、、。
939 :
Now_loading...774KB :2011/04/11(月) 13:49:11.92 ID:f2Vq5Sla
FlashDevelopを使っています。 ActionScript3.0で、関数の引数をconstにすることはできませんか? できるなら記述を教えてください。 参照渡しが前提になるので、呼び出し元に影響を与えないことを保証したいのです。 以下の2つの方法ではビルドエラーになりました。 public function func_name(const name:type) { } public function func_name(name:const type) { }
>>939 プラグインを最新のにしたところ、直りました。
ただ、もう一つ疑問がありまして、↑で記述したコードで、
引数を一切渡さないメソッドを作って、Java側から命令したところ無事に動きました。
そこで、そのメソッドに引数を追加して、Java側からString型変数を引数として渡したところ、
さきほどと同様のエラーが検出されてしまいました。
どうも引数の渡し方が間違っているようなのですが、こういうJavaとFlashを往来させる場合、
>>935 で記述したメソッドのように引数の型を設定しなくても動くものなのでしょうか。
ExternalInterface.addCallback("externalDispNickname", this.externalDispNickname);
↑この部分でも指定しているメソッド名に対して引数などを含めていないのですが、これが原因なのでしょうか、、、
教本に書いてある通りやったのに、引数の指定が間違っているとはどういうことなの・・・
942 :
Now_loading...774KB :2011/04/11(月) 15:47:11.21 ID:OT7AnEfD
CS5 です。 単純にボタンを置きたいだけなんですけど、 import fl.controls.*; var button:Button = new Button(); button.label = "I'm a Button!"; button.width = stage.stageWidth-20; button.height = 40; button.x = 10; button.y = 20; addChild(button); 実行するとこんなエラーが出てしまっています。 TypeError: Error #2007: Parameter child must be non-null. at flash.display::DisplayObjectContainer/addChildAt() at fl.controls::BaseButton/drawBackground()[D:\Program Files\Adobe\Adobe Flash CS5.5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\BaseButton.as:615] at fl.controls::LabelButton/draw()[D:\Program Files\Adobe\Adobe Flash CS5.5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\LabelButton.as:724] at fl.controls::Button/draw()[D:\Program Files\Adobe\Adobe Flash CS5.5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\Button.as:191] at fl.core::UIComponent/callLaterDispatcher()[D:\Program Files\Adobe\Adobe Flash CS5.5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\core\UIComponent.as:1511] 少し前まではできてたんですけど、何が原因でしょうか? よろしくお願いいたします。
ライブラリん中にボタン置いてないんじゃね?
>>941 ASの受け取る側は型指定しないか、*型で受けるしかなかったんじゃなかったけな。
型指定しない場合でもエラーでんの?
>>942 import fl.controls.*;
var button:Button = new Button();
addChild(button);
のみで試す
エラーがでなかったら原因はプロパティの設定のところ
エラーが出たら
import fl.controls.*;
var button:Button = new Button();
のみで試す
エラーが出なかったら原因はaddChild
エラーが出たらコンストラクタ自体がおかしい
まず原因特定しましょう
>>940 呼び出し側で引数となるオブジェクトのディープコピーを(clone,byteArrayなどで)作ってそれを渡すようにするたとか
うーん。根本的でないなあ
関数は他人が書くのかな
fl.controlsってことはFlashのコンポーネントしょ? インポートしただけじゃ使えないのよ。あれUI部分はシンボルとして管理してるからそのシンボルをライブラリに放り込まないと。 コンポーネントパネルかなんかからライブラリへButtonコピーすりゃ動くと思うよ。
948 :
Now_loading...774KB :2011/04/11(月) 17:07:41.35 ID:OT7AnEfD
>>945 ありがとうございます。
プロパティ指定とかいろいろ自分でもいじって(ry
同じエラー出てました。
>>947 ありがとうございます。
>コンポーネントパネルかなんかからライブラリへButtonコピー
これで動きました!
皆さん、
完全に初心者の質問なのに御丁寧にお答えいただき、ありがとうございました。
>>944 はい、エラーになってしまいます。抜粋して書きますと、
[JavaScript側]
nickname = "test";
externalDispNickname(nickname);
↓↓
[swf側]
function externalDispNickname(nickname) {
var tf:TextField = new TextField();
addChild(tf);
tf.width = 600;
tf.text = nickname;
}
ExternalInterface.addCallback("externalDispNickname", this.externalDispNickname);
引数の渡し方はそっくりこの通りです。
Java、swf双方でメソッドの引数(nickname)を消すとエラーは出ず、動いてくれるのですが・・・
>>949 それJavaScript側、flash掴めてるのかな?
普通は、window[flashムービーのdom内id].externalDispNickname(nickname);とか、
document[flashムービーのdom内id].externalDispNickname(nickname);みたいに
DHTML的にFlashムービー指定しないとだめなんじゃない?動いてるっての言うから
実際は指定してんのかもしれないけど。
そこ以外はテストしてみたら動いたわー。String型の引数指定してもいけた。
うえのぶぶんちぇっくして、ブラウザ変えてもだめだったらわからん。
951 :
Now_loading...774KB :2011/04/11(月) 20:28:46.28 ID:f2Vq5Sla
教本の名前を教えて
952 :
911&915 :2011/04/11(月) 22:41:11.97 ID:bytJ81EF
>>916 e.item.source.onClick(new MouseEvent(MouseEvent.CLICK));
なるほど、さんきゅうです。
953 :
911&915 :2011/04/11(月) 22:44:39.42 ID:bytJ81EF
>>917 う〜ん、「お大尽様の所に嫁入りした娘はもはや(元の)生娘ではない」という状態なのかなあ。
>>950-951 なんか・・・・
プログラムの追加削除で以前インストールしたまま放置してたFlashCS4を
アンインストールしたら直りました。わけわかんねぇ、、、
今CS5を使ってるんですが、ソフトを重複してインストールしたのが悪かったんですね・・・
956 :
940 :2011/04/12(火) 15:42:43.47 ID:uziauycV
>946 ありがとうございます。 やはりActionScriptではC言語系のように引数をconstにする修飾子はないのですね…… 現在のところは私一人が担当ですが、将来的に他のプログラマが担当することも有りうるでしょうから、明示したかったのですが。 コメントで書くしかないですかね。
957 :
Now_loading...774KB :2011/04/12(火) 16:34:08.41 ID:/iv1h/Uk
すみません。ググったのですがどうしてもわからず。よろしくお願いします。 環境Flash ver8 AS3 あるMCに下記のイベントを割り当てていて、問題なく動いています。 function gomenu(e:MouseEvent){ gotoAndStop("menu1"); Tweener.removeAllTweens(); } あるMC、をクリックするとTweenerのすべてのTweenを削除してmenu1フレームへ飛ぶ。 しかし、このMCを普通にクリックすれば問題ないのですが、かなり素早い動きでドラッグ すると、一瞬だけmenu1フレームが表示されて、また元フレームに戻り、その後正常に再び menu1に飛びます。 このバグのような現象を解消したいのですがどうすれば良いのでしょうか? Tweenerが悪い気がするのですが、対策が思いつきません。 「かなり素早い動きでドラッグ」というのは「MC内でマウスダウンしたまま素早くMC外に マウスが出て即座にマウスボタンを離す」という感じです。 よろしくお願いします。
わかるわけないだろ まずどのマウスイベントだよ もちろんTwrener.removeAllTweens()をコメントアウトしたらその挙動は起きないんだよな?
Flash初心者です。以下のことがActionScriptで実現が可能かを教えていただけないでしょうか? ブラウザでwebにアクセス時、Flashがサーバ上のファイルをロードする。 ファイルはバイナリもしくは、テキストファイルです。 flash側に、html上からコマンド引数を渡す方法は知っていますが、引数のサイズが大きくなりそうなので 別途ファイルをロードする方法で実装をしたいと思っています。
961 :
957 :2011/04/12(火) 18:38:03.72 ID:/iv1h/Uk
>>958 書き方がまずくてすみません…。
レスありがとうございます。
>>どのマウスイベントだよ
あるMCとか書いてしまいましたが、mcに
mc.addEventListener(MouseEvent.CLICK, gomenu);
と書いて、
>>957 で書いた関数を実行しています。
Tweener.removeAllTweens(); を外せば問題はないです。
でもこれを入れないと上手く動かないので入れざるを得ません。
例えば、CLICKイベントで似たような現象がどこかに書かれてないか
ググったのですが…。
>>959 動作がよくわからんが、HTMLからURLだけFLASHに渡して、
FLASH側でローダー使って渡されたURLロードすりゃいいんじゃないの
>>961 うーん。再現できなかったよ
問題が起きてないのか、その技が実行できてないのか
やっぱり見てみないとわからないすまん。
イベントハンドラにtrace文入れて問題の挙動の時イベントハンドラが正しく一回だけ呼ばれているか確かめてみるとか
964 :
957 :2011/04/12(火) 20:18:11.82 ID:/iv1h/Uk
>>963 ありがとうございます!
trace入れてみましたが、間違いなく1回のみの実行でした…。
まだもう少し考えてみます…。
いままでFLASH8でタイムラインにコードを書いていましたが、ドキュメントクラスを設定してすべてクラスファイルに書くように変えようと思います。 gotoAndStop(2)はどのように表現すればよいのでしょうか 各フレームアクションを関数に書き、frameAction:Vector<Function>にいれて呼び出すのかな その場合、まず呼び出す直前にそのフレームの表示リストやイベントリスナを外したりしなければなりませんよね。 皆さんはどのようにしてるのでしょうか
AS2.0なら_root.gotoAndStop(2);とかでいけるんじゃね?
AS3です。 ラジオボタンのプロパティで指定したRadioButtonGroupのインスタンスを asでそのままインスタンス名入力しても認識してくれないんですが、 グループ内のどれかのラジオボタンのフィールドからグループを持ってきて代入する方法がスタンダードなのでしょうか?
>>966 書き忘れすみません。3.0になりました。
いままでgoToなどで表現していたフレーム遷移(ビジュアル、スクリプトの変化)をフレームアクションを使わず、スクリプトだけでどうやれば良いのか、ということです。
>>968 3.0でも大して変わらんでしょ
フレーム移動させたいMCのインスタンスをgetChildByNameとかでゲットして
(インスタンス).gotoAndStop(2)とか実行すれば遷移してくれると思うけど
>>969 メインのタイムラインをそうして2フレーム目に移動したとして、2フレーム目に書いていたフレームアクションはどこにどうかいたら良いのでしょうか?
>>970 メインのドキュメントクラスでもなんでもいい(構成による)
gotoAndStop(2)
var mc = new mc()
addChild(mc)
とかすりゃ、フレーム2に移動したあと、mcを表示してくれるよね?
別にAS2.0だって、フレーム1に全部のアクションを書くことはできるわけだし
それと大差ないような
アクションをフレームで区切ろうという考えなら、それを捨てればいんじゃね?
MCのフレーム数に合わせて何かしたいならそのMCが発行するEnterFrameイベントの中で、とかかな
>>971 その場合フレーム3に行く場合まずmcをremoveする必要がありますよね
(エンターフレームイベントなども一旦削除しなきゃ重くなるかも)
なんていうか、いままで例えばゲームだったらスタート画面、ゲーム画面、クリア画面の
フレームを作ってそこでそれぞれのアクションを書けばあとはある条件でフレーム遷移するだけで表示も実行するスクリプトも簡単に制御することができました。
同じ事をflaには一切コードを書かず(ライブラリにmcを加えたりはする)実現するには皆さんどのようにしてるのでしょうか
>>973 最初の1行については、その通り
以前はFlashが指示を肩代わりしていたアクションを
今度は自分が直接具体的に指示しなくちゃいけないわけだから、
自分が書くコード量は、タイムライン依存方式に比べりゃ増えると思うよ
>>955 cs4持ってるのにアップグレード版のcs5買ってないとかブルジョアめ
改行せずに書いて一行で書けた!って言うのと一緒
977 :
Now_loading...774KB :2011/04/13(水) 18:42:23.70 ID:Holh7csg
AS3です。 よく、たまにasとつける場合がありますが、どう意味でしょうか。。? たとえば↓ function onComplete(e:Event):void{ var loader:URLLoader = e.target as URLLoader; } この場合の、as URLLoader とは、いったいどういう意味でしょうか? ご存知の方いらっしゃいましたら 何卒よろしくお願いいたします。。
キャストしてるんじゃね? イベントオブジェクトのtargetはデータ型がObject(ほぼなんでもいい)だけど、 URLLoader型の変数に代入して扱いたいから、asでURLLoaderがたに変換(キャスト)してる。 そこでエラーになれば、targetがURLLoaderとして使えないからなんか変、ってわかる。
979 :
Now_loading...774KB :2011/04/13(水) 20:14:37.52 ID:dXppcTRo
AS3,FlashCS4,WinXP addChildされたMCの参照はできるのですが、この削除ができません。 ステージ(root)上に親MC(oya)があり、この子として目的のMC(名前:ko)をaddChildし、 root.oya.getChildByName("ko")で参照できました。 ところがこのMCを削除するため root.oya.removeChild(getChildByName("ko")) と 書いたところ #2007: パラメータ child は null 以外でなければなりません。 というエラーが返ってきました。 どうすれば良いでしょうか?
>>979 「getChildByName("ko")」を「root.oya.getChildByName("ko")」にすればいいんじゃね?
スコープの問題だろうから
981 :
979 :2011/04/13(水) 21:11:35.83 ID:dXppcTRo
982 :
Now_loading...774KB :2011/04/14(木) 11:39:31.44 ID:2+j+I2fw
>>978 さん
なるほど、そーいうことなんですね。
ありがとうございます!
ステージ上にあるムービークリップが存在している(addChildされている)かどうかを判別するにはどうしたらよいでしょうか?
>>983 DisplayObjectContainerのcontains(child:DisplayObject):Boolean
公式リファレンスぐらい見ようぜ
CS5でAS3コードで生成したテキストフィールドのフォントをアンチエイリアス無しに設定したいと思い
検索して調べてみるとFlexの場合のやり方が見つかりました
http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=2655 >>fontAntiAliasType プロパティ設定もnormal, advanced 共にアンチエイリアス設定が有効ですが、
>>advanced 設定にして、fontSharpness, fontThicknessに「0」を設定すれば、
とあり、
fontAntiAliasTypeがテキストフィールドのプロパティであることは分かるのですが
fontSharpness, fontThicknessはどのクラスのプロパティーなんでしょうか
ご存じの方教えてください。
この方法以外でアンチエイリアス無しに出来る方法でも構いません。
よろしくおねがいします。
sharpnessとthicknessならTextFieldのプロパティだよ
TextFieldのプロパティーとしてアクセスしようとするとエラーが出ます。 ReferenceError: Error #1056: flash.text.TextField のプロパティ fontSharpness を作成できません。 ReferenceError: Error #1056: flash.text.TextField のプロパティ fontThickness を作成できません。
fxugってことはそれmxmlのTextInputかなんかじゃねーの? flash.text.TextFieldだとsharpnessプロパティになんのかな でもそれフォント埋め込んでないと意味ないみたいだけど
>>989 ありがとございます
リファレンスも読んでたんですけど
ずっとfontSharpnessを探しててsharpnessだと思ってませんでした
flash.text.TextFieldにsharpnessとthicknessプロパティーありました
ただ、これらを0にしてantiAliasTypeをadvancedにしても
マシにはなるんですけどやはり境界に中間色がでてアンチエイリアス効果を一切無効には出来ませんね。
もっと明確にアンチエイリアス効果を無効に出来る方法が無いかはまた別に調べるとして。
ひとまず
>>986 の疑問は解決しました
ありがとうございました。
sharpnessが400 ticknessが200 にしてみたら?
>>911 それ以外にもいろんな組み合わせを試してみたんですがだめでした
環境)AS3,FlashCS4(WinXP) XMLで要素が持つ属性を元にその要素自体を抜粋する方法はありますか? 例えば下記のXMLで(名称はxml0として) <Fukushima> <NucPlant rad="bad">1号機</NucPlant> <NucPlant rad="good">2号機</NucPlant> <NucPlant rad="good">3号機</NucPlant> <NucPlant rad="good">4号機</NucPlant> </Fukushima> とあったとき、属性radが"bad"の要素に注目し xml0 →(処理)→ <NucPlant rad="bad">1号機</NucPlant> という感じで抜き出したいです。
xml0.*.(@rad == "bad").toXMLString() 戻り値の型はString。XMLとして取得したいのならば、 var xml:XML = <root></root>; xml.* = new XMLList(xml0.*.(@rad == "bad").toXMLString()); rad属性が必ず定義されているとは限らない場合は、 (hasOwnProperty("@rad") && @rad == "bad") のようにhasOwnProperty()で属性の有無を調べておく
996 :
994 :2011/04/15(金) 01:16:11.67 ID:nJ8+QwoJ
AS3 で質問です dispatchEvent(new CustomEvent("hogehoge")); このイベントオブジェクトは毎回 new しないと駄目なんですか? 下のようにこの イベント オブジェクトを変数で持っておき使いまわすって事は駄目なんですかね? custom_event = new CustomEvent("hogehoge"); dispatchEvent(custom_event);
AS1.0の質問です BGMを再生するたびに以下のようなスクリプトをコピペして使っているんですが // コピペしてここの部分だけ変える bgm_title = "(リンケージ名)" flag_loop = true; // 一度停止してから再生 _root.bgm.stop(); _root.bgm.attachSound(bgm_title); _root.bgm.start(); // ループ処理 if (flag_loop == true){ _root.bgm.onSoundComplete = function(){ _root.bgm.start(); }; } これで一度ループさせるBGMを再生すると他のBGMでflag_loop = false;にしてもループされてしまいます。 たぶん一度作ったonSoundComplete = function(){}が消されずに残ってるからだと思うんですが これをdeleteするにはどうすればいいんでしょうか? また、これをユーザー関数にして1行で実行できるようにしたいのですが 関数名 function(bgm_title,flag_loop){ // ここにソースコピペ }; 作り方はこれであってますか?ローカル変数というのを使ったほうがいいんでしょうか?
999 :
994 :2011/04/15(金) 10:42:21.87 ID:/T0t7RHk
上記XMLでの要素の抜粋は教えて頂いた方法でOKでしたが、 任意の位置(深さ)にある要素の抜粋はどうしたら良いでしょうか? var xml0:XML = <Japan> <Site> <Fukushima> <NucPlant rad="bad">1号機</NucPlant> <NucPlant rad="good">2号機</NucPlant> <NucPlant rad="good">3号機</NucPlant> <NucPlant rad="good">4号機</NucPlant> </Fukushima> </Site> </Japan>; この場合、3段目ということで var str:String = xml0.*.*.*.(@rad=="bad").toXMLString(); で取得できますが、実際はrad="bad"の位置がXMLによって不定(バラバラ)なので アスタリスクによる深度指定ができません。 試しに任意の深さということで var str:String = xml0..*(@rad=="bad").toXMLString(); とか var str:String = xml0..(@rad=="bad").toXMLString(); で実行しましたがダメでした。 すいません、引き続きお願いします。
1000 :
994 :2011/04/15(金) 10:43:48.72 ID:/T0t7RHk
ついでに埋めときます。 あと次スレお願いします。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。