ActionScript 誰かが物凄い勢いで解答するスレ 22

このエントリーをはてなブックマークに追加
1Now_loading...774KB
AcitonScriptのことなら
初歩的な質問でもなんでもおk

見れない、保存したい、flashを作りたいはスレ違い
下記の関連スレ、超基本的な質問へ。

●質問する時は自分の環境を書く(AS2,AS3の別も)
●質問はものすごい勢いじゃなくて結構
●できるだけコードも示す
●まず自分がやりたいことを明確に書く。そのために試してみた処理を書く

前スレ
ActionScript 誰かが物凄い勢いで解答するスレ 21
http://pc11.2ch.net/test/read.cgi/swf/1225258423/
関連スレ
Flashの超基本的な質問はここでしろ! part39
http://pc11.2ch.net/test/read.cgi/swf/1226284753/
Flash製作初心者の質問スレッド レイヤー39
http://pc11.2ch.net/test/read.cgi/swf/1223896635/
2Now_loading...774KB:2009/01/11(日) 13:55:07 ID:5gN5JNqE
>>1
産休
3あやや:2009/01/11(日) 20:44:39 ID:+wNHdYl7

flashでダイアログボックスを呼び出してサーバーにファイルのアップロードをしたいのですが

flashからPHPに受け渡す方法がわかりません。だれか教えてください!
4Now_loading...774KB:2009/01/12(月) 00:45:37 ID:IjIMltZr
ドキュメント嫁。 ttp://livedocs.adobe.com/flash/9.0_jp/main/
ActionScript 2.0 の学習 > 外部データの操作 > ファイルのアップロードとダウンロードについて  または
ActionScript 3.0 のプログラミング > ネットワーキングとコミュニケーション > ファイルのアップロードおよびダウンロード操作
5Now_loading...774KB:2009/01/12(月) 01:35:13 ID:N1JyVs3B
CS3 XP

AS3.0でちょっと質問。
クイズを作ってて、問題データはxml外部読み込み。
xmlには問題、N択解答、解説とノードがある。

xmlデータ読み込んでそれを
テキストボックスに表示させる事をしたいんだけど
タイムラインの1フレームに読み込みの記述書いておいて
そのタイムラインの問題、解答などのテキストボックスには反映されるんだけど
クリックして別のフレームに飛んだとき(正解用フレームなど)に
そのフレームのテキストボックスにはxmlのデータ(解説)が反映されない。
これって1フレームに書いた読み出しコードをそのフレームにも
書かないといけないの?

移動先フレームに同じ変数使うとCS3様に
怒られるからなんか1フレームの変数を呼び出す、的な利用方法が
あると思うんだけど・・・・本見てもサッパリ。

また改めて1フレームに書いたようなxml読み出しを別の変数名で書かないと
動いてくれないのだろうか。

どなたか分かる方いないでしょうか?
6Now_loading...774KB:2009/01/12(月) 01:52:05 ID:+Fs7tV2B
Actionscriptにマウスカーソルをマウス以外の外部入力装置によって移動させることが出来るような関数ってありますか?
GainerやArudinoなどを使ってオリジナルのマウスみたいなのを作ってみようと思っているんですが、ハード面よりも
プログラミングで躓いてしまっている初心者ですorz
7Now_loading...774KB:2009/01/12(月) 03:50:55 ID:NC4Gqhjt
>>6
「Wii AS3 Flash」でググる。
コーディングは、簡単なサンプルが多数載っている本を買って、
改変しながら勉強すると良い。
8Now_loading...774KB:2009/01/12(月) 04:05:42 ID:+Fs7tV2B
>>7
ありがとうございます、早速参考にして勉強させてもらいます ノシ
9Now_loading...774KB:2009/01/13(火) 06:51:41 ID:zcQl2Si6
ついさっきからas始めた者です
as3なんですがマウスホイールでムービークリップの制御(という言い方なのかな?)は
出来るんでしょうか?
ホイールで動く時計の針と連動させたいのですが、行き詰ってしまいました
10Now_loading...774KB:2009/01/13(火) 07:07:35 ID:mpKATc2U
>>9
ヘルプを ホイール で検索すれ
11Now_loading...774KB:2009/01/13(火) 07:22:21 ID:zcQl2Si6
>>10
ヘルプ機能初めて使ってみました^^;;
けっこう詳しくいろいろと載ってますね。

で、結局出来ないってことですよね? 初心者にはあのヘルプすらキツイというorz
12Now_loading...774KB:2009/01/13(火) 09:20:10 ID:mpKATc2U
出来るに決まってるだろw
13Now_loading...774KB:2009/01/13(火) 15:56:52 ID:st7HWLnu
ActionScript3でゲームを制作してる者です。
[Embed]でmp3を埋め込んで効果音を鳴らしてるのですが
出だしが0.5秒くらい遅れて再生されてしまいます。
14Now_loading...774KB:2009/01/13(火) 15:58:12 ID:st7HWLnu
すいません、途中で投稿してしまいました。
音の出だしをもっと早くする方法はあるでしょうか。
よろしくお願いします。
15Now_loading...774KB:2009/01/13(火) 16:20:49 ID:mnd9df8d
・0.5秒前から再生する
・サウンドの無音部分を削除する
・動的に無音部分を飛ばして再生する
16Now_loading...774KB:2009/01/14(水) 07:12:32 ID:+j2EBBNy
出来るって教えてくれた方、ありがとうございました。
出来るとさえわかったので自分なりに調べたらそれっぽくできました!
17Now_loading...774KB:2009/01/14(水) 14:02:44 ID:yfHgP3pr
AS2で質問です。

下のページを参考にXPathAPIを使っているんですが、
http://itpro.nikkeibp.co.jp/article/COLUMN/20061130/254416/


trace(XPathAPI.selectSingleNode(this.firstChild,"/データ/商品[@id=1]/商品名"));

こういった場合の[@id=1]の1のところに変数を使いたい場合は、
どう記述すればよいのでしょうか?
18Now_loading...774KB:2009/01/14(水) 14:14:23 ID:aBJL2uTq
"/データ/商品[@id=" + 変数名 + "]/商品名"
1917:2009/01/14(水) 14:53:17 ID:yfHgP3pr
できました!
ありがとうございます!
20Now_loading...774KB:2009/01/16(金) 23:46:42 ID:unblxp1S
FLASH CS3上で矩形図形をムービークリップ(インスタンス名:mc)にして、その中にテキストフィールドやムービークリップを追加して
AS3でライブラリからこのムービークリップを呼び出し、ムービークリップの中のテキストフィールドに文字を入れたりムービークリップを動かしたり
そういった事はできたのですが、
この呼び出したmcインスタンスを処理中に消したい場合、このmcに
removeChild(mc);
mc = null;
としただけで、ライブラリから呼び出したデータは全部消えるのでしょうか?

もしくは、全部消すならこのmcの中にあるムービークリップ等に全てインスタンス名を付け、全部getChildByNameで呼び込んで
mc.removeChild(mc内のムービークリップ)
mc内のムービークリップ = null;
等として全部中身を消した後、最後にmcにnullを渡さないと、ライブラリから呼び出したデータ全部は消えないのでしょうか?
どうかお願いします
21Now_loading...774KB:2009/01/17(土) 03:43:17 ID:D55Hv6Zk
>>20
上の方法だと、
1. 参照が無くなったmcが削除候補になり、そのうち消える
2. (mcが消えたことで)参照が無くなったmc内のムービークリップが削除候補になり、そのうち消える
下の方法にすると、
1. 参照が無くなったmcと、mc内のムービークリップが削除候補になり、そのうち消える

とにかく参照が無くなった(どこからもアクセスできなくなった)時点で
自動的に削除候補になり、そのうち自動的に削除されると考えるとOK。
mc内のムービークリップを参照しているのがmcだけなら、上の方法でも全く問題無しです。
2220:2009/01/17(土) 10:01:36 ID:2dSrA4uS
>>21
オブジェクト同士が幾ら表示リスト上で繋がっていても、参照されずstageからの大元の表示リストから外れたら
いずれはその塊は削除されるといった感じでしょうか
削除についてあまり具体的にわかっていなかったのでとても勉強になりました!
返信ありがとうございました
23Now_loading...774KB:2009/01/17(土) 15:48:31 ID:wfapOyy9
as3、cs3環境で質問です
メインタイムラインで定義した変数に外部ファイルのクラスからアクセスするにはどうしたらよいでしょう?メインタイムラインじゃstaticも使えないしお手上げです…

よろしくお願いします
24Now_loading...774KB:2009/01/17(土) 23:04:15 ID:5H12adRg
>>23
変数 var abc:int; として、MovieClip(root).abc は?
25Now_loading...774KB:2009/01/18(日) 12:11:42 ID:wjLyBMpt
>>24
できました!
助かりました、直してやらないといかんのですね。ありがとうございます!
26Now_loading...774KB:2009/01/19(月) 00:28:40 ID:4mjMfXDT
flash CS、AS3.0でインスタンスの削除がよくわからないのでお尋ねします。
flash CSで作成したアニメMCにリンケージを設定して、スクリプトで
var ほにゃらら:MovieClip = new MCの名前();
と呼び出して、MCの再生が終了したら
このインスタンスを自動的に削除したいと思っています。

今のところ、MCの最後のフレームのアクションに、
stage.removeChild(this);
delete(this);
stop();
と書いていますが、これで問題なく削除されていますか?
27Now_loading...774KB:2009/01/19(月) 01:20:48 ID:hgslr40p
うん
参照とリスナがなければ
28Now_loading...774KB:2009/01/19(月) 03:57:05 ID:pIUGdFoe
>>26
・AS3.0では、オブジェクトのインスタンスに対してdeleteは使えません。
・呼び出し側の変数「ほにゃらら」がMCの参照を持っているので削除されません。

多分、呼び出し側で、
var ほにゃらら:MovieClip = new MCの名前();
stage.addChild(ほにゃらら);
とかしていると思うので、それを、
stage.addChild(new MCの名前());
として、MCの参照を持つ変数を作らないようにします。
MCのフレームアクションは、
stage.removeChild(this);
stop();
だけでOKです。
stage.removeChild(this)を呼び出した時点で
MCは参照がなくなるので、削除対象となり自動的に削除されます。
(AS3.0では、明示的にオブジェクトを削除する手段はありません)
29Now_loading...774KB:2009/01/19(月) 11:59:09 ID:lgm6yMTn
初心者ですが、AEのようにオブジェクトに動きを付けたいと思っています。
例えば、キラッ☆のように、円形に配置された状態で渦を巻きながら外方向へ移動するとか、
流れ星のように、奇跡にランダムで表示しながら移動のような感じです。
このASそのものを探しています。コピペで使えるようなサンプルサイトがありましたら教えてください。

あと、
http://hakuhin.hp.infoseek.co.jp/main/as/raster_efc.html#RASTER_EFC_04
これをゲームとしてではなく視点移動も含めた動画として利用したいのですが、
方法がわかりません。マリカのレーススタートのように接近する動きを考えています。
描画さえできればよいので、ご教授ください。
30Now_loading...774KB:2009/01/19(月) 12:21:39 ID:eNuehtqY
>>29
後者のマリオカート風味の映像は
FlashCS4から比較的簡単にできる
3D回転を用いればよい
31Now_loading...774KB:2009/01/19(月) 21:53:25 ID:zUsrWYRE
function a (str){
trace(str);
}
(true ? a : b)("あいう")

これがJavaScriptじゃ動くのにどうしてFlashじゃ動かないんですか><おしえてください
代替策もお願いします
32Now_loading...774KB:2009/01/19(月) 22:00:50 ID:qlx0cOnC
JavaScriptでも動かんだろそれ
33Now_loading...774KB:2009/01/19(月) 22:04:33 ID:qlx0cOnC
あー、alertにするのか
つか、player10だとbさえ定義しときゃ動いたよ
9はしらん
34Now_loading...774KB:2009/01/21(水) 00:14:41 ID:VIAI9CrJ
お願いします。教えて下さい! CS3 XP AS2.0です。

ブラウザの横幅に合わせて縦横の大きさが変動するムービークリップ(contents)を
作ったのですが、
ブラウザの横幅に合わせて横幅のみ変動する高さは常に一定のムービークリップ(footer)を
いつもこのムービークリップ(contents)のすぐ下に配置するには
どうすればいいでしょうか?
contentsのスクリプトは以下のようになってます。
よろしくお願いします。


Stage.scaleMode = "noScale";
Stage.align = "TL";

var MW:Number = contents._width;
var MH:Number = contents._height;

var sListener:Object = new Object();

sListener.onResize = function() {

contents._width = Stage.width;
contents._height = MH/MW*Stage.width;
}

updateAfterEvent();

Stage.addListener(sListener);

sListener.onResize();
35Now_loading...774KB:2009/01/21(水) 00:50:23 ID:X+OCiw+W
footerのY座標はcontentsの縦幅

後、updateAfterEvent何か意味あるの?
明らかに書く場所間違えてるように思うけど、意図してのこと?
36Now_loading...774KB:2009/01/21(水) 08:10:32 ID:VIAI9CrJ
>>35
ありがとうございます!
おっしゃるようにY座標をcontentsの縦幅にしたら思うように出来ました。

updateAfterEventは見本にしたサンプルソースをそのままコピペして
しまいました。すいません意味はありません。
37Now_loading...774KB:2009/01/22(木) 22:41:29 ID:sC8xzXGa
>>34ですが、
footer._y = contents._height;

を入れることによってfooterはcontentsの下に置くことが出来たのですが、
ブラウザの大きさによってはfooterが隠れてしまう場合があります。
常にfooterの高さ分(仮に100px)を確保するにはどうすればいいのでしょう?

contentsの高さ + footerの高さ よりステージの高さが大きいときは
ステージが見えていて構いません。

わかりにくい表現ですみません。教えて下さい。
38Now_loading...774KB:2009/01/23(金) 00:42:17 ID:6GJxr1wE
たびたびすみません。34です。
いいサンプルがあったので。
ちょうどこのサイトみたいな感じです。

ttp://swfc-shanghai.com/

もしかして考え方自体が違っているかもしれません。
よろしくお願いします。
39Now_loading...774KB:2009/01/24(土) 18:30:57 ID:3O4tfDUp
各asファイルをどうディレクトリ分けすればいいのかわからないんだけど
参考になるサイトとかあったら教えて下さい…。
40Now_loading...774KB:2009/01/24(土) 23:20:25 ID:+wWI71Cj
どうでも良いかもしれんけどちょっと質問。
AS2.0で

_parent.gotoAndPlay("label");

gotoAndPlay("_parent.label");
は記述的にはどっちが良いとかある?気になって昼寝もできません。
41Now_loading...774KB:2009/01/24(土) 23:26:49 ID:LeScmody
>>39
参考にするも何も自分の好きなように分けたらいいんじゃない?
別に分けなきゃいけないルール・制約があるわけで無いんだし
42Now_loading...774KB:2009/01/25(日) 11:16:14 ID:aUdtqsmP
>>40
上はMovieClipクラスのgotoAndPlayメソッド
下はgotoAndPlayグローバル関数
43Now_loading...774KB:2009/01/26(月) 17:30:54 ID:sO17OXmi
すいません、詰まってます、ご教示ください。
MovieClipのモーショントゥーインで作った動きの移動量(ベクトル)
をとることは出来るのでしょうか。

4443:2009/01/26(月) 17:36:18 ID:sO17OXmi
イメージは動く床に物体が乗ってるって感じです
45Now_loading...774KB:2009/01/26(月) 18:09:03 ID:53Ne6y/P
モーショントゥイーンを設定した MovieClip にインスタンス名を設定すれば
各フレーム毎にその MovieClip インスタンスの位置データ(x, y)を取得できる。
そこから移動量を割り出せばよいのでは
46Now_loading...774KB:2009/01/26(月) 20:30:13 ID:xLv/aYBe
getDefinitionByNameを使いたいのですが上手くいかず、試しに
新しいflaファイルを作り、タイムラインに
import pack.*;
for(var i:int=0; i<2; i++) {
var testClass:Class = Class( getDefinitionByName("pack.TestClass" + (i+1) ) );
}
そしてflaファイルと同じ階層にpackというフォルダを作りクラス名とトレース文が違うだけのTestClass1・TestClass2を入れて
package pack {
public class TestClass1 {
public function TestClass1() {
trace("TestClass1");
}

}
}
としたのですが、プレビューをすると、変数 TestClass1 は定義されていませんというエラーが出てしまいます
一体何が足りないのでしょうか・・・
actionscript3、FLASH CS3です
4743:2009/01/26(月) 20:44:45 ID:sO17OXmi
FPSで現在値は分かるのですが、前回値がと、とれなひ・・
48Now_loading...774KB:2009/01/26(月) 20:51:54 ID:53Ne6y/P
4946:2009/01/26(月) 23:08:58 ID:xLv/aYBe
>>48
レスありがとうございます
記事を教えてもらって恐縮ですが、未だに上手く掴めません・・・
ただ、結局for文の繰り返し内だけで処理の記述をを纏める事はできず
for文の前に自前に
var testClass1:TestClass1;
var testClass2:TestClass2;
という様に先に個々の呼び出しを行なっておかないとダメという事なのでしょうか

ライブラリにムービークリップを作りリンゲージして呼び出す方は普通に出来ましたので
こちらの方でなんとかやっていった方が無難なんでしょうかね
50Now_loading...774KB:2009/01/27(火) 01:17:10 ID:bxrBGuAT
>>49
flashはコンパイルしたときに一度も使われてないクラスはswfに含めないようになってる
だからコンパイル後にgetDefinitionByName()しても定義されてませんってなる

なのでswfに含まれるようにするには、リンケージしておくか、
var testClass1:TestClass1;
var testClass2:TestClass2;
というように型を宣言しておくか、コンパイルオプションですべてのクラスを含めるようにする
51Now_loading...774KB:2009/01/28(水) 16:15:16 ID:UjH6BzW3
AS3の質問です!
抽象クラスのコンストラクタに引数が設定されている場合
その抽象クラスを継承したサブクラスには、かならずその抽象クラスの
コンストラクタをオーバーロードしなければいけないのですか??

抽象クラスを継承したサブクラスのコンストラクタに
superにパラメータを渡すだけのコードを記述しなければならないのが
ばかばかしい(コードの重複になる)と思ったので質問しました。

もしかしたら、サブクラスにコンストラクタを記述しない場合
自動的にスーパークラスのコンストラクタがサブクラスに生成
されるのではないかと思い、試してみたのですが

サブクラスにコンストラクタを記述しないで実行したら
「引数の数が正しくありません」とコンパイラに怒られてしまいました。

あきらめてさっさと各サブクラスにsuperにパラメータを渡すコンストラクタを記述すべきでしょうか。
52Now_loading...774KB:2009/01/28(水) 20:58:07 ID:dYPgy85W
>>51
うん
53Now_loading...774KB:2009/01/29(木) 22:37:21 ID:BysMUrX4
AS3.0です。
1.四角いボタン(movieclip)にマウスオーバーでoverの処理
2.四角いボタン(movieclip)からマウスアウトででoutの処理

その四角いボタンの中にmovieclip(矢印が点滅している)があります。
四角いボタンからはマウスアウトはしていないのですが中に含まれている
矢印のムービークリップにマウスが重なると四角いボタンのマウスアウトの処理が実行
されてしまいます・・・四角いボタンの中なのでオーバー状態にしたいのですがなにかうまい方法はありますでしょうか?



54Now_loading...774KB:2009/01/29(木) 23:04:49 ID:8hwen1xM
rollOver rollOut
55Now_loading...774KB:2009/01/29(木) 23:40:43 ID:BysMUrX4
>>54
ありがとうございます。
MouseEvent.ROLL_OVER
MouseEvent.ROLL_OUT
ですね!
助かりました。
56Now_loading...774KB:2009/01/30(金) 01:59:55 ID:KElJQM8O
CS3 AS3.0で、
ブラウザがFirefoxのときのみ再現するのですが、

var loaderinfo : LoaderInfo = root.loaderInfo;
loaderinfo.addEventListener(Event.COMPLETE, LoadComplete);

としたときに、COMPLETEイベントが起きません。
SWFのキャッシュがあるときに起きるような感じがするのですが。。。
原因のわかる方、解決策をお願いします。
57Now_loading...774KB:2009/01/30(金) 12:50:24 ID:xIXfCi2U
>>56
Event.ENTER_FRAME で bytesLoaded と bytesTotal を比較して、
completeしているか判断するしかないみたいですよ。
58Now_loading...774KB:2009/01/30(金) 15:51:03 ID:nccG/xyw
FLVのストリーミング再生ってむずい?
(Flash Media Serverはあるみたい。)
59Now_loading...774KB:2009/01/30(金) 17:33:52 ID:c4hP/QTz
>>57
ぁー、そうなんですか。
どうもありがとうございます〜、助かりました。
60Now_loading...774KB:2009/01/31(土) 13:23:20 ID:Vcu4AIju
cs3ですがmcAにイレゴにしたmcボタンがあります。タイムラインのルートからそのボタンを参照しようとすると、mcAがプロパティ未定義な感じのエラー。

まずmcAを参照できないみたい。リンケージせずにインスタンス名で普通に呼んでるんですが、どなたか解決法ご存知でしたら教えて欲しいです

お願いします
61Now_loading...774KB:2009/01/31(土) 16:33:33 ID:YCH6qc80
>>60
俺も似たようなトラブルに見舞われた。
ttp://d.hatena.ne.jp/flashrod/20070317/1174093786
などを参照して事前の『仕掛け』が必要っぽい。

はっきり言って、これはバグだと思う。
62Now_loading...774KB:2009/01/31(土) 19:08:30 ID:AWs6FmF7
AS3.0で質問です。
ステージにオブジェクト名をつけたムービークリップがあるのですが、
これを自前のクラスから参照するにはどうしたらいいのでしょうか?

メインのタイムライン
var a:testClass = new testClass();
stop();

自前のクラス
package {
import flash.display.Stage;

public class testClass {
function testClass()
{
trace(Stage.myMc);
}
}
}

これだと、trace(Stage.myMc);のところで
1119: 未定義である可能性が〜
というコンパイルエラーになってしまうのです。どうやったら
ステージにあるMCにたどり着く事ができるのでしょうか?
63Now_loading...774KB:2009/01/31(土) 20:11:00 ID:f0C88A41
>>62
タイムラインなら
MovieClip(root).myMc;
でいけないかな?
それかstageの参照を引数でとるとか
64Now_loading...774KB:2009/01/31(土) 21:11:16 ID:AWs6FmF7
>>63
>MovieClip(root).myMc;
これだと、「1120: 未定義のプロパティrootへのアクセスです」になってしまいました。
このクラス自身にはrootがない、と判断されてしまっているのかなと。

クラス側でステージを受け取るメソッドを作ってから、
タイムラインでstageを渡すようにメソッドを呼ぶとステージは受け取れる?
みたいなのですが、
public function init(st, mc:MovieClip)
{
 trace(st);  // class [Stage]
 trace(st.myMc);  // undefined
}
となってしまってmyMcにたどり着けませんでした。
じゃあ、myMcを渡せばいいという話ではあるんですが、ステージ上の
MCが複数あると大変なことに・・・。
65Now_loading...774KB:2009/01/31(土) 22:04:28 ID:f0C88A41
>>64
そうだった、そのクラス自体はDisplayObjectを継承してないからrootとかないな

Stageには直接アクセスできないからDisplayObjectのstageプロパティを介さなきゃいけない はず
public function Foo(s:DisplayObject) {
trace(s.stage);
}

というかstageなのかrootなのかw
66Now_loading...774KB:2009/01/31(土) 22:07:33 ID:gV9db6kl
addedToStageイベント(ADDED_TO_STAGE)でステージに追加されたときにrootなりstageなりから辿っていけばおkじゃね?
67Now_loading...774KB:2009/01/31(土) 22:27:25 ID:AWs6FmF7
>>65
DisplayObjectなるほど、と思って試してみたのですが、
s.stageまではアクセスできるのですが、s.stage.myMcにすると
やはり1119エラーでした。
なんか変だなと、ステージにテキストフィードやらムービークリップを
たくさん置いてから、メインのタイムラインに以下のコード書いて実行したところ...
var num = stage;
for(var i=0;i < num;i++){
  var mc = stage.getChildAt(i);
  trace(mc);
}
結果は
[object Stage]
[object MainTimeline]
2つしかありませんでした。たぶん、FLASHでステージに置いたMCとか
テキストフィールドとかコンポーネントはstageに含まれるのではなく、
stageと等価な関係?っぽいです。実際、メインのタイムラインで
trace(myMc);とすればオブジェクト名が出てきますが、trace(Stage.myMc);
としたら1119エラーに。

これはもう、最初からステージにモノを置くなって事でしょうか?
68Now_loading...774KB:2009/01/31(土) 22:42:30 ID:AWs6FmF7
>>66
イベントが飛んでこないようです。理由はきっと>>67でstageに含まれていないから?
もしかして、初回のAS実行時にはMCとかテキストフィールドが
生成されていないのかと、2フレ目以降で監視するようにしてみたのですが、
結果は>>67と同じでした。
69Now_loading...774KB:2009/01/31(土) 22:46:07 ID:gV9db6kl
意味わからん
どんな作りになってんのそれ
70Now_loading...774KB:2009/01/31(土) 22:48:41 ID:gV9db6kl
あーあー、ステージに配置するんじゃないのか
じゃあstaticなクラスプロパティにでもステージへの参照つっこんどけば?
ステージ側から初回にそこへ参照突っ込んどけばあとはいけんじゃ?
71Now_loading...774KB:2009/01/31(土) 22:55:24 ID:AWs6FmF7
>>69
FLASHを起動して、真っ白い画面にテキストフィールドを置いたり
絵を描いてMC化したりです。それらに自作のクラスからアクセスしたいのです。
もちろん、ドキュメントクラスからはアクセスできます。

>>70
オブジェクトがステージ内に含まれていない事がわかったので、それだとうまくいきませんでした。
72Now_loading...774KB:2009/01/31(土) 23:03:30 ID:gV9db6kl
うまくいかない理由がさっぱりわからん
まーがんばってくれ
73Now_loading...774KB:2009/02/01(日) 02:43:07 ID:GXbpPFja
パブリッシュ設定のFlashのタブにある、
ActionScriptのバージョンっていうとこの右の「設定」を押して。

Strictモードのチェックをはずしてパブリッシュしてみたらどうだろう。
74Now_loading...774KB:2009/02/03(火) 01:42:48 ID:kL5yL3UE
75Now_loading...774KB:2009/02/03(火) 06:43:46 ID:fiT5GXs+
比較演算子で()の中が真なら1、偽なら0を返すような計算をするのって
ASでできますか?
(例) a= (b==c)*10 ;aの値は、bとcが同じなら10,違うなら0になる
76Now_loading...774KB:2009/02/03(火) 09:46:34 ID:7+8t7a69
a=b==c?10:0
77Now_loading...774KB:2009/02/03(火) 11:59:23 ID:fiT5GXs+
できました。ありがとうございます。
7871:2009/02/03(火) 14:04:37 ID:7hc0/nyC
>>73
だめでした。
>>74
ありがとうございます。できないみたいですね。
79Now_loading...774KB:2009/02/03(火) 14:08:18 ID:7+8t7a69
自作のクラスをnewするときに参照を渡してあげれば済む話ではないのか
80Now_loading...774KB:2009/02/03(火) 16:26:33 ID:kL5yL3UE
>>78
いや、79の言う通りで参照を渡せばいいだけの話

   
8171:2009/02/04(水) 22:23:57 ID:1Vr++Uqi
>>79-80
ステージの参照をですか?
それとも最初からFLASHで配置したムービークリップとか
テキストエリアをですか?

前者の場合、実際にやってみると出来ませんでした。
コンパイル時1199か実行時にundefinedという感じです。

後者の場合、それが出来る事は>>64の段階でわかっているのですが
個数が多いと引数が大変だなと。それらをひっくるめたMCを作れば
いいんですけど。
82Now_loading...774KB:2009/02/05(木) 01:02:55 ID:v2y1IwiT
>>81
解っているというのではなく、適当に書いたら動いたんだろw
参照を渡すって解るか?
83Now_loading...774KB:2009/02/05(木) 01:51:18 ID:NaAoHmkq
AS3です。
テキスト入力フィールドに入れる文字数を
全角なら何文字、半角なら何文字というように制限する方法はありますでしょうか?
84Now_loading...774KB:2009/02/05(木) 08:03:25 ID:hPRBao0h
>>81

これでいける

・タイムラインに配置したオブジェクト
myMc

・タイムライン
import TestClass

var tc:TestClass = new TestClass(this);


・自作クラス
package
{
import flash.display.MovieClip;

public class TestClass
{
public function TestClass(obj:MovieClip)
{
trace(MovieClip(obj).myMc);
}
}
}

後、ここを見て表示リストや表示オブジェクトやrootについて知っておいた方がいいよ

ttp://hakuhin.hp.infoseek.co.jp/main/as3/container.html
ttp://help.adobe.com/ja_JP/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e58.html
85Now_loading...774KB:2009/02/05(木) 11:34:22 ID:5K8E//sg
>>84
ありがとうございます!ここのサイト↓はみていたのですけど、
ttp://hakuhin.hp.infoseek.co.jp/main/as3/container.html
この図だとstageの下のroot1(root)のように書かれているのに、
stage経由だとmyMcにたどり着けなかったので変だなぁと思っていました。
まだちょっと、thisとrootの関係があやふやですが、つかみ所が
わかってきました。本当にありがとうございます。

var tc:TestClass = new TestClass(root);
trace("myMc.name = " + myMc.name);
trace("this = " + this);
trace("this.myMc.name = " + this.myMc.name);
trace("root = " + root);
trace("root.myMc.name = " + root.myMc.name);
trace("stage = " + this.stage);
trace("root.stage = " + root.stage);
trace("stage.root = " + stage.root);  // ?

>>82
参照を渡す意味は(C++やjavaでさんざんやってきたので)わかるのですが、
何を渡すのかのところで考え違いを起こしていました。
86Now_loading...774KB:2009/02/07(土) 14:27:30 ID:A1tneeCg
AS3なのですが
ユーザーが右クリックで拡大/縮小した場合の倍率を
取得するにはどのようにしたら良いでしょうか?

衝突判定の処理の中で
Matrix.tx Matrix.ty を使用しているのですが
ムービーの拡大/縮小で値が変わってしまうので
倍率を取得して補正したいのです。。。
87Now_loading...774KB:2009/02/07(土) 14:58:47 ID:KrAd0DDR
matrixのaとかでわかるんじゃね?
コンテナで一括で倍率変更してるならコンテナので
88Now_loading...774KB:2009/02/07(土) 15:14:23 ID:A1tneeCg
>>87

ありがとうございます

matrixのaとかdで正しい値が取得出来ました!

1週間悩んで、散々ヘルプ見てても気がつかなかったです。。
脳みそ腐ってきてるのかな。。
89Now_loading...774KB:2009/02/08(日) 14:00:34 ID:228j9EfA
Flex Builder 3上でFileReferenceを使ってローカル上のファイルを読み込み
取り扱うファイルを読み取りたいのですが、FileReference.loadを実行しても

ReferenceError: Error #1069: flash.net.FileReference にプロパティ load が見つからず、デフォルト値もありません。

Flex SDKを3.0.1で実行した際には正常に動作する様なのですが、
Flex SDKを3.2.0として実行すると上記のようなメッセージが表示され、
load関数自体を実行できません。

実行の際に必要なFlashのバージョンを10.0.*にしたり、
読み込まれるplayerglobalを複数選択などしてみたのですが
どれも正しい動作には至りませんでした。

もし宜しければ調べるためのキーワードなどを教えて頂けないでしょうか。
90Now_loading...774KB:2009/02/08(日) 15:29:14 ID:228j9EfA
すいません、事故解決しました。

今までFlashのデバッグ作業をローカル上のFlashで行っていたのを、
ブラウザ上からのデバッグに切り替えたら正常に動作しました。
もし調べてくれていた方がいたらすいません。
91Now_loading...774KB:2009/02/08(日) 18:03:58 ID:pNXBfy4V
ネットにある、ページのサムネイル画像をクリックすると、元画像が表示されるみたいな仕組みについてですが
あれは読み込む画像を、サムネイル用の小さい画像と元画像とを別々に用意してあるものなのでしょうか?

上記のようなスクリプトサンプル
(xmlにurlを明記して、それを元に画像を読み込みサムネイル・元画像を作る)
を見つけたのですが、読み込んでる画像urlがサムネイル側・元画像側とも同じでした(元画像一枚を双方で読み込み)
サムネイル側では読み込んだLoaderはサイズを小さくし表示、元画像側で読み込んだLoaderはそのまま表示していました
実装はできたのですが、なんだか動作が重いような感じがします
こういった仕組みは初めて作ったのですが、ネットにあるこの様な仕組みも同じ画像を読み込んで縮小したりで処理してるのでしょうか?

ふと思ったのが、元々サイズを小さくしたサムネイル画像と元画像を別々に用意して
それぞれをサムネイル側・本画像側で読み込みして表示した方が重くなったりしないのかなと思ったのですが
この仕組みのセオリーとしてはどっちの方法が良いのでしょうか?
Actionscript3.0をFlashCS3使用です
92Now_loading...774KB:2009/02/08(日) 22:08:44 ID:228j9EfA
>>91
その通りです。
縮小する処理や、さらにその画像をそのまま動かす処理というのは意外と重いです。
サムネイルを用意しておくことにはサーバとの通信負荷の軽減にも繋がります。

元画像しか用意してないのなら、読み込み時にサムネイル用のBitmapなどを用意して
その後に動かしたりするといいと思います。
93Now_loading...774KB:2009/02/09(月) 23:54:09 ID:/IJc1ra5
>>92
ありがとうございました、サムネイル用・元画像と別々に用意した方がやっぱりいいんですね
サムネイルBitmapというのも調べてみようと思います、遅くなりましたがありがとうございました
94Now_loading...774KB:2009/02/10(火) 12:32:17 ID:ZBzCffMP
モロゾフって誰ですか?
95Now_loading...774KB:2009/02/10(火) 15:18:14 ID:KWlBU+dN
ttp://www.adobe.com/flashon/?v=0404106bc1f8022
このサイトのプレイヤーにHD(High Definition)のON/OFFがあるのですが、
AS3+FMS3のみで切り替えできるのでしょうか?
96Now_loading...774KB:2009/02/10(火) 18:12:11 ID:ygAoQOnz
環境:xp flexSDK3.2 FlashDevelop AS3 MXML

mxmlのaccordionパネルについて教えて下さい。
以下のような構成の時にスクリプトからボタンにアクセスができません。
Accordion
├HBox1 / Button1(初期表示)
├HBox2 / Button2
├HBox3 / Button3

○Button1(初期状態からアクセスできる)
×Button2(一旦HBox2を表示すればそれ以降アクセスできる)
×Button3(一旦HBox3を表示すればそれ以降アクセスできる)

accordionパネルはいったん表示しないと、中の子が定義されないようなので困っています。
最初から全てのボタンにアクセスしたい場合はどうしたらいいでしょうか?
9796:2009/02/10(火) 19:10:15 ID:ygAoQOnz
>>96
自己レスです。
accordionパネルのcreationPolicyプロパティをallにすることでいけました。
98Now_loading...774KB:2009/02/11(水) 18:02:27 ID:lEleu7xb
AS3の文字化け解決で質問です。
サーバからの日本語文字列をコード変換する方法を教えてください。

AIRでURLLoaderを利用して、サーバからのレスポンスを取得したところ、
日本語部分が文字化けしています。(ブラウザだとちゃんと見れる)

sparkで提供されているライブラリ(DetectOnWeb)を利用し、文字コード判定したところ
レスポンスデータはUTF-8でした。
unescapeMultiByteを利用しても違う文字化けに変わるだけで解決できません。

この後どのように解決すれば良いでしょうか?


99Now_loading...774KB:2009/02/11(水) 21:33:52 ID:Mdmk1dc4
トゥイーンエンジンの自作について詳しく解説しているサイトか書籍はありませんでしょうか?
100:2009/02/11(水) 21:57:25 ID:34ChhF3X
初めて投稿します。
今、ホームページを作成していて、下記のインテルホームページのようにフラッシュ動画のボタンを
押すと、画像が移動し次の画像が横から出てくるという動きを作りたいのです。
ttp://www.intel.co.jp/ja_JP/consumer/index.htm?iid=gg_play-jp+home_consumer

これは、ActionScriptというものを使ってできるのかわからないのですが、どなたかやり方を知っている方いたら
教えてくださぃ。
どうかお願いします。
101Now_loading...774KB:2009/02/12(木) 01:03:10 ID:lAYuhZhg
102:2009/02/12(木) 01:31:17 ID:qtpZIyCE
101へ
ありがとう!!
早速行ってきます♪
103Now_loading...774KB:2009/02/12(木) 02:39:43 ID:VhsSTmyQ
103へ
アンカー書けや阿呆
初心者は3年ROMれよ。恥を知れクズ
104Now_loading...774KB:2009/02/12(木) 03:06:17 ID:Y+uDgvHo
>>95
ストリームの読み込みは別として
fcommand辺りでいけたはず
gglで「flash 全画面」辺りで調べてみて
一応あとで調べなおしてみる

>>98
useCodePageで調べればいけると思う
105Now_loading...774KB:2009/02/12(木) 04:19:54 ID:ypmfssxE
初歩的な質問ですみません。
ムービークリップ内からタイムラインの変数を参照&書き換えを行いたいのです
下記を実行すると1120エラーでうまく参照されていないようです
皆様の知恵をご教授下さい。
・タイムライン内
MCr1というMCを配置
var a = 2;
var b = 2;
//MCが止まっていたらスペースキーを押すことによってスタートする
if ( b == 2 ) {
stage.addEventListener(KeyboardEvent.KEY_DOWN, dousa);
function dousa(evt) {
if(evt.keyCode == 32){
a = 1;
MCr1.play();
}}}
//MCが動いていたら左矢印を押すことによってストップ信号を出す
if ( b == 1 ) {
stage.addEventListener(KeyboardEvent.KEY_DOWN, dousa);
function dousa(evt) {
if(evt.keyCode == 37){
a = 2;
}}}
・MCr1内
//ストップ信号を受け取ったら停止する
if( a == 2 ) {
stop();
b = 2;
}
106Now_loading...774KB:2009/02/12(木) 08:25:32 ID:LJFd0/LR
キーが押されたときというイベントに対するリスナーを登録
そのハンドラ内でaなりbなどの判定してplay,stopを実行
なんでif文の中に関数定義なんか書いてるんだ?
インスタンス名は小文字で始める
重要なflgにはa,bなどのわかりづらい名前は付けない
型をちゃんと指定する
107Now_loading...774KB:2009/02/12(木) 12:16:08 ID:ihZ9xDdB
as3.0で、外部から読み込んだ複数の数値のデータの
最大値を求める方法はありますか?
配列だと、

var a:Array = [10,21,35];
Math.max.apply(null,a);

で求められるんですが、外部から読み込んだデータを
Arrayの配列にぶっこむ方法とかはあるのでしょうか。
108Now_loading...774KB:2009/02/12(木) 12:23:36 ID:LJFd0/LR
普通に配列に代入すりゃいいじゃん
109107:2009/02/12(木) 12:35:45 ID:ihZ9xDdB
>>108
自分でやった代入の方法がおかしいみたいです
例えば外部のXMLのnumdataという項目にそれぞれ数値が
設定してあって、その最大値を読み込みたいんですが、

var xxx = myXML.numdata;
var a:Array = [xxx];
var yyy = Math.max.apply(null,a);
trace(yyy);

というような記入方法だとうまく出て来ず…
110Now_loading...774KB:2009/02/12(木) 12:45:16 ID:e3I8fFpi
xxxが文字列でカンマ区切りになっているのなら
まず分解しなくてはだめ
var a:Array = xxx.split(",");
各aの配列の内容は数値ではなく文字列で分解されるかもしれないので
更に各要素を数値変換する必要があるかも
111107:2009/02/12(木) 13:15:29 ID:ihZ9xDdB
>>110
すみません、書くのを忘れていました、読み込みたいデータが複数あるので
(1つのデータ内の項目のひとつがnumdata)、for〜でループさせて処理をしてます。
よって、データ1つの持つnumdataの数値は1つで、カンマ区切りにはなっていないのです。

var xxx = myXML.numdata[i];
var a:Array = [xxx];
var yyy = Math.max.apply(null,a);
trace(yyy);

xxxで、とりあえず全データのnumdataの数値を拾ってきているのですが、
逆にそれを、カンマのついたArrayの形にしたい、という感じです。
112Now_loading...774KB:2009/02/12(木) 13:39:02 ID:e3I8fFpi
それこそ一つ一つ配列に代入すればいいだけの話
配列の使用方法を調査してみて
113107:2009/02/12(木) 15:07:25 ID:ihZ9xDdB
>>112
これしか思いつかず、やってみたのですが、やはりトレースすると
全部のnumdataが列挙されるだけになってしまいます…
Arrayの基礎がわかってないですかね…

var xxx = myXML.numdata[i];
var a = new Array;
a[i] = xxx;
var yyy = Math.max.apply(null,a);
trace(yyy);
114Now_loading...774KB:2009/02/12(木) 16:13:00 ID:LJFd0/LR
つか、最大値を求めるだけなら、xml取得してから
for文で最大値求めるコード書くだけでいんじゃね
特に配列使う必要があるなら別だけど
115Now_loading...774KB:2009/02/12(木) 19:00:57 ID:XbzaQrJc
なんで一個ずつ新しい配列つくるのさ
全部同じ配列にいれなきゃ
116Now_loading...774KB:2009/02/12(木) 20:30:47 ID:Y+uDgvHo
俺も練習がてら>>107のサンプル書いてみた
皆ならどんな風に書くか
スレ盛り上げるつもりで書いてみようぜ

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;

public class asMIK22_107 extends Sprite
{
private var _loader:URLLoader;
public function asMIK22_107()
{
_loader = new URLLoader();
var req :URLRequest = new URLRequest("data.xml");
_loader.load(req);
_loader.addEventListener(Event.COMPLETE,loadComplete);
}
private function loadComplete(e:Event):void{
var myXML:XML = XML(_loader.data);
var max:uint = 0;
for each(var v:int in myXML.value) if(max < v)max = v;
trace(max);
}
}
}
117Now_loading...774KB:2009/02/12(木) 20:31:36 ID:Y+uDgvHo
>>116に使ったXMLの中身

<data>
<value>23</value>
<value>51</value>
<value>43</value>
<value>16</value>
</data>
118Now_loading...774KB:2009/02/13(金) 00:41:19 ID:IPyKSBGW
AS3.0でFlashCS3-ProをWinXP-Proで使っています。

Root上(Stage上)に置いたインスタンスがNullになり困っています。
(本やWebで調べても原因が分かりません)

HosiというMCのASファイルからRoot上のインスタンス(starSetB)を参照したいのですが、
どうしてもNullになり参照できません。
参照の経路は Hosi → Root → starSetB で、starSetBを押すとHosiに関連付けられた
ASファイル中の trace ("starSetB"); が実行されるようにしたく思っています。
(つまり 子 → 親 → 子 で、兄弟の参照です)

ところが、プレビューすると下記のメッセージが現れて参照出来ません。
 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません

今までは同じようなASを組んでも問題なく実行出来ましたが、年明けから同様な症状
になります。一応、CS3のアップデートを試みましたが「利用可能なアップデートはありません」
と出ます(CS3のバージョンは9.0です)。下記はHosiで書いたASの抜粋です。

var RootTL:MovieClip = root as MovieClip; //rootの指定

public function TestSet_01 () {
RootTL.starSetB.buttonMode=true; // マウスポインタを指の形に
RootTL.starSetB.addEventListener (MouseEvent.MOUSE_UP,starSetB_up);
}

private function starSetB_up (mouseEvt:MouseEvent) {
trace ("starSetB"); //出力
}

どうしたら良いでしょうか?
119Now_loading...774KB:2009/02/13(金) 02:43:45 ID:Py6H3+2F
>>118
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Hosi extends MovieClip {
var RootTL:MovieClip;

function Hosi() {
TestSet_01();
}

public function TestSet_01() {
RootTL = root as MovieClip; //rootの指定
RootTL.starSetB.buttonMode=true; // マウスポインタを指の形に
RootTL.starSetB.addEventListener(MouseEvent.MOUSE_UP,starSetB_up);
}

private function starSetB_up(mouseEvt:MouseEvent) {
trace ("starSetB"); //出力
}
}
}

できるじゃん。
starSetBがない。starSetBが別の階層にある。starSetBのインスタンス名を付け忘れた。
・・・とかじゃないかなぁ。なんでもかんでもrootってもあれだけど。

MOUSE_UPよりMOUSE_CLICKのがいいような気が。
120Now_loading...774KB:2009/02/13(金) 04:48:39 ID:HwhM5Ab5
Rootでスクリプトを書かない事情が何かあるんだろうか
121118:2009/02/13(金) 05:21:09 ID:pywSiMVS
>>119
有難うございます&ゴメンなさい。最初の説明が不十分でした。

上で書いた「HosiというMCのASファイルからRoot上の」は正しくは、
  HosiというMCのASファイル(名前:TestSet_01.as)からRoot上の

です。全体は http://uproda11.2ch-library.com/src/11158522.jpg の通りです。
これだとNullになるという意味です。

教えて頂いた http://uproda11.2ch-library.com/src/11158523.jpg をHosiという
ASファイル名で保存しテストしましたが、これでもNullが表示されます。

すいませんが、再度アドバイス願います。
122118:2009/02/13(金) 05:26:01 ID:pywSiMVS
>>120
部品ごとに制御をしたいので、個別に書いています。
今回は部品間の通信(参照)が出来ないので困っています。
123Now_loading...774KB:2009/02/13(金) 09:39:20 ID:Py6H3+2F
>>121
upローダ使えるんだったらflaをUpしてください。
その方が話がはやいです。
124Now_loading...774KB:2009/02/13(金) 11:36:28 ID:EqPjaE6W
>>121
RootTL.startSetB... のところを Stage.startSetB...
にしたらいいかと(TestSet_01がドキュメントクラスの場合)

TestSet_01がドキュメントクラスじゃないなら、
TestSet_01の引数にドキュメントクラスへの参照変数を追加する
(new するときにthisを与える)
125Now_loading...774KB:2009/02/13(金) 12:20:53 ID:EqPjaE6W
>>121
Vistaインストール中でヒマだから
サンプルプログラム作ったよ

http://uproda11.2ch-library.com/src/11158543.zip.shtml
126Now_loading...774KB:2009/02/13(金) 14:28:12 ID:VqIvAhCj
WinXP Flash CS3を使用していますが、
元々作っていたFlashのソースが前バージョンから引き継いだもののため、
ActionScript2を使っています。

Flashアプリを

 getURL("FSCommand:fullscreen", "true");
 getURL("FSCommand:allowscale", "false");

で、フルスクリーン表示させています。

そのFlashアプリでPDFを起動させる必要があるのですが、
PDFファイルを起動させる方法がわからなかったので、

 getURL("test.pdf");

を使ってブラウザからPDFを開こうと試みたのですが、
これをするとPDFは開くものの、フルスクリーンで起動していた
元画面がリサイズされて小さくなってしまいます。

解決するにはどうしたらよいでしょうか?
127118:2009/02/13(金) 14:31:20 ID:9v1HkEjy
>>123
すいません。ZipでUpしました(解凍後のフォルダ名:PassWay)。
http://uproda11.2ch-library.com/src/11158556.zip.shtml
内容は、
1) AS3_PassWay_01.as ・・・ メインASファイル(t01a,t02共通)
2) PassWay -t01a.fla ・・・ 当初のFla
3) TestSet_01a    ・・・ 当初のASファイル
4) PassWay -t02.fla ・・・ 119さん方式のFla
5) Hosi.as      ・・・ 119さん方式のASファイル

PassWay -t01a.fla と PassWay -t02.fla は共に starSetB をRoot(Stage)上に持つのですが、
共にインスタンスstarSetBがNullになります。
なお、メインのASファイル AS3_PassWay_01.as は現時点では特に動作を指定していません。


>>124
「ドキュメントクラスへの参照変数を追加する」の具体的な方法が分かりません。引数に
メインASファイル(ドキュメントクラス)の AS3_PassWay_01 を入れましたが、Nullになります。


>>125
有難うございます。
しかしこれでは、ライブラリMCのリンケージ設定が無いので目的のものとは違ってしまいます。
128107:2009/02/13(金) 14:34:05 ID:dt1m184T
>>116
ありがとうございます、>>114さんの、for文で最大値を求める、という部分で
躓いてたんですが、変数用意して、自分より数値が大きければつっこんでいく、
という考え方でいけたんですね。

発想の引き出しがまだまだ足りないので、がんばります。
ありがとうございました。
129Now_loading...774KB:2009/02/13(金) 14:47:42 ID:3nCFpb1b
>>126
とりあえずマルチはよせ
130Now_loading...774KB:2009/02/13(金) 15:38:53 ID:VqIvAhCj
>>129
完全にテンパってました。すいません。気をつけます。
131Now_loading...774KB:2009/02/13(金) 16:03:52 ID:EqPjaE6W
>>127
せっかくサンプル作ったのに、ちょっとは自分でも調べようよ
1から10まで全部丁寧に説明せにゃいかんのかい
132Now_loading...774KB:2009/02/13(金) 16:21:56 ID:EqPjaE6W
とりあえずソース見た感じ
RootTL.starSetB. を this. に直せば動くから

リンケージ名と同じ名前のASファイルは自分自身、つまりthis
133Now_loading...774KB:2009/02/13(金) 16:24:11 ID:EqPjaE6W
あとこれは消す
var RootTL:MovieClip = root as MovieClip;//rootの指定
134118, 127:2009/02/13(金) 20:20:08 ID:c1yOLIKJ
>>131-133
有難うございます&大変申し訳ございません。
UpしたZipではリンケージ設定で根本的な間違いをしていましたので訂正します。
※その前に再度質問の整理をさせて下さい。

元々は、部品や処理内容を個別のASファイルに記述して 子 → 親 → 子 という
兄弟間の参照をしたく思っていました。再UpしたZip(下)の場合なら、同じRoot(Stage)上に
ある 「インスタンスstarSetB」→「インスタンスstarBeginMとstarEndM」 の処理です

つまり、キーボード(starSetB)と画面(starBeginMとstarEndM)に分離している状態です。
今までもこのように処理を分け、兄弟間の参照を書いても問題なかったのですが、今年の
初め辺りから不可能になり(Nullが表示され)困っていました。

尚、再UpしたZipは http://uproda11.2ch-library.com/src/11158613.zip.shtml で、
TestSet_01e.as の RootTL.starSetB.buttonMode=true; でエラーになります。

度々申し訳ありませんが、宜しくお願い致します。
135Now_loading...774KB:2009/02/13(金) 20:26:51 ID:/1TyRIl0
前はas2.0で書いてたんだろ
あんた人の話し何も聞かないでできないできない言って勝手にテンパるからうざいわ
何度同じ事聞かれても同じ答えしか出ねーよ
しかも動くサンプルあるし
技術どうこうのレベルじゃない
あんたに言っても無駄
136118, 127:2009/02/13(金) 21:31:07 ID:c1yOLIKJ
>>135
最初の質問の記述に間違いがあって、更にUpしたFlaファイルにも間違いがあったので、
混乱を避けるため(出発点に戻るつもりで)134を書いて再Upしました。


> 前はas2.0で書いてたんだろ

この目的の動作は最初からAS3.0で書いています。AS3.0のもっと複雑な記述のコンストラクタ
で問題なく兄弟間の参照はできていましたが、再三書いている通り、今年に入り参照できなくなりました。
137Now_loading...774KB:2009/02/13(金) 21:55:30 ID:/1TyRIl0
動くわけ無いコード書いてあるのに今年も去年もねーだろ
好きに書けば?動かないけどな
138Now_loading...774KB:2009/02/13(金) 23:05:49 ID:HwhM5Ab5
>>135
落ち着け。テンパってるのはこの人じゃないぞ
それじゃあ人を怒りたいが為にここに着てるように見えるぞ
>>136
もう少しFlash上のスコープについて調べてみな
Flex(スクリプトのみ)で動かしてるスコープとFlashのスコープで
見比べてみるとよく解るかもしれないぞ
それと再三って言葉のイメージが良くないな
139118, 127, 136:2009/02/13(金) 23:52:42 ID:Cnx9oIzQ
>>138
つい感情的になってしまいました。言葉には気を付けます。

「Flash上のスコープ」について調べてみます。
あと、このスレの>>60>>85は私の疑問と近い気がしますので
参考にしてみます。
140Now_loading...774KB:2009/02/14(土) 15:47:46 ID:iX64rQxt
int, uint, voidの頭文字がなぜ小文字なのかが気になる
わかるひといる?
141Now_loading...774KB:2009/02/14(土) 16:04:04 ID:y1vBolil
慣性じゃない?
142Now_loading...774KB:2009/02/14(土) 16:16:40 ID:X6pNZNO8
>>140
Flex SDKコード記述に関する規則とベストプラクティス
http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions-ja

143Now_loading...774KB:2009/02/14(土) 16:43:04 ID:iX64rQxt
>>141
Javaからの慣例ってことなのかもしれないけど、
AS3の場合の大文字小文字が、プリミティブ型とオブジェクト型、
って分け方でもないし不自然じゃない?

>>142
ごめんそのURLの意味がわからない
144Now_loading...774KB:2009/02/14(土) 17:28:21 ID:rxu6JF3U
> AS3の場合の大文字小文字が、プリミティブ型とオブジェクト型、
> って分け方でもない

どういうこと?
145Now_loading...774KB:2009/02/14(土) 18:40:39 ID:X6pNZNO8
>>143
わからないというのは、プリミティブ型について記載されてないから、
という意味で?
それとも、このページの存在意味がわからない方?
146Now_loading...774KB:2009/02/14(土) 22:12:06 ID:iX64rQxt
レス遅れました、すんません

>>144
Javaはプリミティブ型(基本データ型)の時は頭文字小文字、オブジェクト型の時は頭文字大文字で
始まる型名で宣言するようになってるけど、AS3はそうはなってないですよね?って意味です。
もしそういうJavaみたいな分け方での頭文字の大文字小文字を使うのであれば、プリミティブ型っぽい
BooleanやNumberなども頭文字小文字にすべきだと思うし、そうではなく「厳密に言えばAS3での型は
すべてオブジェクトだ」ってことならなぜint, uintだけ頭文字小文字なの?って思うし、中途半端に思えるんです。

>>145
そのページは以前から知っていて読んだこともあるんですが、今回の自分の質問との関連性がわからないっす。
Adpbeが提唱するコーディング規約にも、なぜint, uintが頭文字小文字になってるのか、とか、わかりやすさの
ために頭文字を大文字にしてIntやUintやVoidを使って良い、とかは書いてないですよね?

JavaとAS3をちょっとかじっただけの知識しかないので、根本的なことを見落としているかもしれません。
さっきC#を調べてみたら、プリミティブ型はすべて小文字、オブジェクト型はすべて大文字で統一されてる気がします。
147Now_loading...774KB:2009/02/14(土) 22:53:43 ID:gDkAwmPa
Flash8のactionscript2で書いています

ムービークリップ中のボタンのonReleaseの処理をタイムラインに書いて、
getURLさせようとしてるんですが動きません

_root.infoMC1.b_link1_1.onRelease = function(){
getURL("http://www.hoge.com/","_blank");
}

って感じです
infoMC1はMovieClip、b_link1_1はボタンのインスタンス名です。
このアクションはタイムラインの10コマ目に書いてあって、対象のボタンも10コマ目に
出てくる設定です。
どこかおかしいでしょうか?
基礎的なことで恥ずかしいですが、基礎的なことだからこそ大ハマリしてしまいました
よろしく御願いします
148Now_loading...774KB:2009/02/14(土) 23:27:20 ID:ZQTZEFJA
>>146
ECMAScript準拠かそうでないかで分けてるんじゃないの?
149Now_loading...774KB:2009/02/14(土) 23:37:37 ID:LsUzzL4b
>>147
それで動くはず。何か別の要因かと。
150Now_loading...774KB:2009/02/14(土) 23:54:22 ID:X6pNZNO8
>>147
そのonRelease()前に
trace("name = " + _root.infoMC1.b_link1_1);
って書いてみて出力をチェックする。なにもでなきゃ
infoMC1.b_link1_1がない。
trace("name = " + _root.infoMC1);
って書いてみて何も出なきゃinfoMC1がない。

インスタンス名がついてないとかね。
151Now_loading...774KB:2009/02/15(日) 01:10:35 ID:KYMvOx+s
>>149,150
どうもありがとう 言われたことチェックしてみます
またきたらまたヨロシクです
152Now_loading...774KB:2009/02/15(日) 02:07:16 ID:xUpRDZDp
>>146
Boolean や Number がオブジェクト型であるということが中途半端だ
という理由はあるのかな?
153Now_loading...774KB:2009/02/15(日) 12:16:26 ID:THCfAlSL
var flag:Boolean = true;
var flag:Boolean = new Boolean(true);
var flag:Boolean = Boolean(true);

こういうところが嫌いだな。Arrayなんか最悪だわ。
154Now_loading...774KB:2009/02/15(日) 13:50:12 ID:xUpRDZDp
好みなのね
初めは抵抗あっても
なれてしまえばなんとも感じなくなるさ
155Now_loading...774KB:2009/02/15(日) 13:57:30 ID:BMWY/xmk
>>146
ECMAScript4にあわせたんじゃないかな?
あれが確かint,uintとかになってたはず

>>152
そういうことじゃなくて、クラス名の先頭は全て大文字にするという命名規則があるのに
大文字だったり小文字だったり中途半端なことをするのか と言いたいんじゃないのかな?

>>153
それは
Booleanデータを代入
新しいBoolean型を生成
Boolean型に変換
ってだけで、作る側が統一すればいいだけの話では?
156153:2009/02/15(日) 14:01:12 ID:THCfAlSL
1行目はプリミティブ型
2行目のはオブジェクト型

だと思ってたんだけど違うの?全部オブジェクト型なの?
157Now_loading...774KB:2009/02/15(日) 14:10:44 ID:BMWY/xmk
全てプリミティブのように振る舞うが全てオブジェクト
3つとも全て同じこと
158Now_loading...774KB:2009/02/15(日) 14:33:49 ID:lUMnBeXF
質問
trace( !false );
これなんでtrueになるの?オブジェクトならfalseが返るはずだと思って気になった。
NOT演算子って何やってるの?
159Now_loading...774KB:2009/02/15(日) 14:37:48 ID:xUpRDZDp
>>155
> そういうことじゃなくて、クラス名の先頭は全て大文字にするという命名規則があるのに
> 大文字だったり小文字だったり中途半端なことをするのか と言いたいんじゃないのかな?

int, uint ってクラスだっけ?
160Now_loading...774KB:2009/02/15(日) 14:38:06 ID:5m0Kp91k
データタイプとデータバリューを一緒にしてるしw
161Now_loading...774KB:2009/02/15(日) 14:40:26 ID:xUpRDZDp
>>158
!false

false != true

false は true ではないから true が返る
162Now_loading...774KB:2009/02/15(日) 14:58:44 ID:BMWY/xmk
>>158
もともとブール値を評価するものだから

>>159
クラスだよー
163Now_loading...774KB:2009/02/15(日) 15:09:16 ID:lUMnBeXF
メモリの1bit目が0になるデータバリューを持つオブジェクトが倫理否定でtrueになるという認識で合ってますか?
Objectは1bit目が1のため倫理否定で必ずfalseが返って、
Bool型はObjectだけど、1だったり0だったり・・・と?
164Now_loading...774KB:2009/02/15(日) 15:13:31 ID:5m0Kp91k
オートキャストの表でも見ろw
165Now_loading...774KB:2009/02/15(日) 15:17:11 ID:lUMnBeXF
なにそれー・・
166Now_loading...774KB:2009/02/15(日) 15:21:33 ID:lUMnBeXF
わかった。Boolにキャストされるって事か。ありがとう
167Now_loading...774KB:2009/02/15(日) 15:21:49 ID:BMWY/xmk
>>163
Booleanがオブジェクトだから、とかではなく
!はもともとBooleanのtrue、falseをみるもの
!にBoolean以外を入れた場合Booleanに変換してから評価する
基本的に
0, NaN ,"", null, undefined
以外は全てtrueになる

168Now_loading...774KB:2009/02/16(月) 15:24:23 ID:zUdKOiSX
Fla8 AS1.0書き出しです。

テキスト入力でユーザーに数字を入力させるのですが、
先頭に0が付いていると8進数になってしまうと調べて分かりました。
substringなどをつかって頭の0を取り除くのはできましたが、
000123のように頭に連続して0がある場合もすべて取り除きたいのですが、
頭から順に0を取っていく簡単なfunctionを教えていただけますでしょうか。
169Now_loading...774KB:2009/02/16(月) 15:30:09 ID:doL+FOee
>>168
parseInt(n,10);
170169:2009/02/16(月) 16:04:11 ID:zUdKOiSX
ありがとうございます・・・わざわざforとsubstr使って0を取ってました・・・。

追加で質問です。
電卓のようなものを作っているのですが、テキスト入力に数字を
入力させるのですが、空欄のままだとそのまま先に進んで
計算を続行してしまいます。

始めに「0」と表示させたくないので、最初は var n:String="";
で空欄にしているのですが、
if文で n="" とやっても判定されません。
数字を一旦入力してDELキーで数字を消して空欄にしても同じです。

テキスト入力やStringにおいて ="" で定義したものは =""ではないのでしょうか?
171169:2009/02/16(月) 16:05:31 ID:zUdKOiSX
n=="" の間違いです。すいmせん。
172Now_loading...774KB:2009/02/16(月) 16:15:51 ID:bRAuf6dT
>>170
=""は""のはず。
スコープが間違ってないか、参照している変数が間違ってないかなど
trace()でまずは確認をしてみては?
173168:2009/02/16(月) 16:39:23 ID:zUdKOiSX
上のコメントのナンバリング169じゃなくて168でした、すいません。

>>172
ありがとうございます。解決いたしました。
if文で==""を跳ねたあとにも別の判定でgotoAndPlayを
実行していたので後ろのif文でOK判定が出たら進んでしまうようでした。
174Now_loading...774KB:2009/02/16(月) 22:39:58 ID:nAJ/W0m7
FlashDevelop (3.0.0 RC1)、Flex3 SDK (3.3.0.4589)、XP SP3 にて作成しております。

AS3で動画プレイヤーを作成しようと思い、とりあえず再生のみ実装した状態で
Youtubeの動画ダウンロードし、再生テストを行ってみたのですが、
Youtube上での再生に比べて、カクカクした再生になってしまいます。

スペックの高いPCでは両者とも特に問題ないのですが、低スペックPCではカクカク度合いの差が顕著に現れるようです。

パフォーマンス上問題となる記述がありましたら、指摘願います。

テストに使用した動画
ttp://www.youtube.com/watch?v=tDqGiEdTyOg&fmt=22

package player
{
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;

public class Main extends Sprite {
private var connection:NetConnection;
private var videoStream:NetStream;
private var video:Video;
private var tf:SoundTransform;

public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

175174:2009/02/16(月) 22:40:37 ID:nAJ/W0m7
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
connection.connect(null);
}

private function netStatusHandler(e:NetStatusEvent):void {
switch (e.info.code) {
case "NetConnection.Connect.Success":
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.quality = StageQuality.BEST;
videoStream = new NetStream(connection);
video = new Video();
video.width = 640;
video.height = 360;
video.x = 0;
video.y = 0;
video.smoothing = true;
video.attachNetStream(videoStream);
stage.addChild(video);
tf = new SoundTransform();
tf = videoStream.soundTransform;
tf.volume = 0.5;
videoStream.soundTransform = tf;
videoStream.play("test.mp4");
}
}
}
}
以上です。
176Now_loading...774KB:2009/02/16(月) 22:49:15 ID:dVB9oljT
フラシャーな人はデザパタとかアルゴリズムとかちゃんとやってますか

as上がりはそういう本皆無だから大変そう
177Now_loading...774KB:2009/02/16(月) 23:00:31 ID:KVcmyXkw
デザートのリンゴがなんだって?
178Now_loading...774KB:2009/02/16(月) 23:08:10 ID:1Me5tKbh
>>176
俺はjava / C++上がりだけど、デザパタとかやってないね。
だって面倒じゃん。そういうきっちりした事したくないから
FLASHやってるんだもん。

シングルトンとかASでもがんばれば出来るけどさ、作っておけば
使い回し出来て資産もたまって、あとになるほどウマーなのは
知ってるけどさ。
179Now_loading...774KB:2009/02/17(火) 00:03:04 ID:EWV1sOGe
ユーザーに外部の画像ファイルを任意に開いて貰いたいのですが、
こちらでスクリプトにあらかじめ開かせるファイル名を記述しないで開かせるというのは
AS3でどうすればできますか?
180Now_loading...774KB:2009/02/17(火) 00:19:27 ID:NUDkYuXM
外部の画像ファイルってユーザのローカルPC上の?
それともサーバ上の?
FileReferenceクラス
または
外部ファイル読み込み
で調査すれば情報が見つかるかも
181Now_loading...774KB:2009/02/17(火) 02:42:34 ID:SPQyJ3QZ
ローカルPC上ですけど、
ググってもファイル名を記述しておいてそれを読み込むという形なんですよね。
case1.jpgみたいな。これだとユーザーにいちいち画像ファイルの名前を変えて
このフォルダにいれてくださいねってやんないといけないです。
182Now_loading...774KB:2009/02/17(火) 03:16:50 ID:aTd04jcR
>>176
英語だけど
「Advanced ActionScript 3 with Design Patterns」
はいい本だぜ
183Now_loading...774KB:2009/02/17(火) 04:13:46 ID:NUDkYuXM
>>181
テキストフィールドに記述した文字列を
読み込むファイル名に指定するとかできないの?
184Now_loading...774KB:2009/02/17(火) 13:32:30 ID:8QUL+1yf
>>183
ちょっとユーザーに負担は減るかもしれないけど50歩100歩ですよね。
もしFlashで製作中にファイル開こうと思って
テキストフィールドに文字列を記述して
ファイル名を読み込む製品だったとしたら…。
185Now_loading...774KB:2009/02/17(火) 14:25:13 ID:NiiB9Lto
>>181
普通にAirならできるんじゃない。
AS3 Air ファイルの操作でググレばいっぱい出てくると思う。
186Now_loading...774KB:2009/02/17(火) 19:53:47 ID:d3il71c+
>>178>>182
どうもです
知ってはいるけど今やることもないかな…とか業務に忙しいとかでしょうかね

今後as3に見られるようにもっと言語が固くなってくとしたらやっといたほうがいいのかなと思い始めてまして。

英書あるんですね!読んでみます。
187Now_loading...774KB:2009/02/18(水) 00:03:37 ID:TYhwfq5U
addChildAt()の使い方で困っています。
環境は、WinXP-ProでFlashCS3-ProのAS3.0です。

1秒毎にMC内に別MC(HaikeiStar)を子としてランダムな位置に500個設置するため、
for (id=0; id<500; id++) {
var tmpMC0:MovieClip=new tmpClass0 as MovieClip;
//
//ここでランダムな位置と大きさと透明度を設定
//
this.addChildAt (tmpMC0, id+1); //配置インデックスは1より
}

を書きました。目標としては1秒毎に再描画され、この500個を前とは別の位置等で出現させたいの
ですが、時間経過と共に子が増えていく一方です。

本などでは、addChildAt(mc, 100)などとインデックス位置を指定すると、既に100番目に別の子供
が居る場合には前の子が消されて新しい子が配置される(上書き?)ということですがその通り
になりません。

考えられる原因と対策をお願いします。

なお別案として、一旦全部消して再配置する意味で
for (var id=0; id<500; id++) {
this.removeChildAt (1); //配置インデックス1を500回消す
}
を試しましたが、これだと
  RangeError: Error #2006: 指定したインデックスが境界外です。

になります。
188Now_loading...774KB:2009/02/18(水) 00:13:48 ID:8zclMyVM
>本などでは、addChildAt(mc, 100)などとインデックス位置を指定すると、既に100番目に別の子供
>が居る場合には前の子が消されて新しい子が配置される(上書き?)ということですがその通り
>になりません。

ならないと思った。ずれるんじゃない?
189Now_loading...774KB:2009/02/18(水) 00:17:39 ID:8zclMyVM
AS3.0
コンテクストメニューで「画質」▼→低中高。
これと同じ動作をカスタムメニューに入れたいんだけどどうやればいいか
ヒント下さい。(二段階にメニューを構築したい)
カスタムメニューは自分で作る事は出来ます。
190Now_loading...774KB:2009/02/18(水) 00:31:33 ID:wWFSZb4F
>一旦全部消して再配置する意味で
この消し方だとforの最後に残るのがインデックス0の要素だから
removeChildAt(1);
しても、1番目は空っぽだよ、というエラーではないかと。

for (var id=0; id<500; id++) removeChildAt(0);
191Now_loading...774KB:2009/02/18(水) 00:56:27 ID:modCBuH5
>>189
無理でござる
192Now_loading...774KB:2009/02/18(水) 01:04:43 ID:TYhwfq5U
>>188
すいません。勘違いしていました。
既にある場合は後ろにずれます。


>>190
あー確かに。でも、インデックス0には共通のオブジェクト(絵)を配置しているので
これは消せないです。

今やったのですが、一旦全部消すことをせずに this.getChildByName(名前).x
などでプロパティ変更することでOKでした。
有難うございます。
193Now_loading...774KB:2009/02/18(水) 01:53:25 ID:wWFSZb4F
>>192
インデックス0が対象外なら
for (var id=1; id<500; id++) removeChildAt(1);
for (var id=0; id<=500; id++) removeChildAt(1);
for (var id=499; id>0; id--) removeChildAt(i);
とかさ。
あんましよくないけど。
194Now_loading...774KB:2009/02/18(水) 06:12:40 ID:i5dg6tkn
AS2での深度とAS3での表示リストは全く違う
深度管理では空きの深度があるけど、表示リストの場合は自動的に
前つめになる(空きは無い)
for文で削除が関与するときにnumChildrenを使うときは要注意
195Now_loading...774KB:2009/02/18(水) 12:57:38 ID:8zclMyVM
>>191
無理でござるか…サンクス
196Now_loading...774KB:2009/02/18(水) 17:03:28 ID:8X4iMHb7
>>179
FileReferenceオブジェクトを作ってリスナーを登録
FileReference.browse()
FileReference.load()
イベントリスナーでコンプリートきたら
FileReference.data
にByteArrayで入ってるからそこから読めばおk
197Now_loading...774KB:2009/02/18(水) 17:11:09 ID:5JjW5ZLS
環境:WinXP-ProでFlashCS3-ProのAS3.0です。scaleXとscaleYが作用せず困っています。

ステージに配置したMCインスタンス(名前:shipM ←Matrixクラスでの変形対象)の大きさをムービー
開始時に1/10に変更しようとコンストラクタで
public function AS3_ShipForm_01 () {
this.shipM.scaleX=0.1;
this.shipM.scaleY=0.1;
//
//Matrix操作
//mtr = shipM.transform.matrix;
// ・・・

としたのですが、大きさが変化しません。
試しに、this.shipM.scaleX=1000; としてもX方向の寸法はそのままです。

どうすべきでしょうか? Matrixクラスを併用するとMCプロパティ設定(インスタンスの大きさ設定)は
無効になるのでしょうか?
198Now_loading...774KB:2009/02/18(水) 17:21:12 ID:i5dg6tkn
>//mtr = shipM.transform.matrix;
って何?順番変えてみれば?
199Now_loading...774KB:2009/02/18(水) 18:25:50 ID:m4fsEnEs
今晩は。質問失礼いたします。
外部から画像を読み込んでいるのですが、それを

ステージに既に配置してあるテキストボックスの下で、
なおかつ
既にステージに配置してある背景画像よりは上に出したいのですが、
表示順序が上手くいじれず呼び出した画像が一番上にどうしても表示されてしまいます。

どう書けば上手く行くか分かる方はいらっしゃるでしょうか…!
200Now_loading...774KB:2009/02/18(水) 18:36:32 ID:dDjiTrCt
ASのバージョンはいくつさ
201199:2009/02/18(水) 18:47:57 ID:m4fsEnEs
失礼いたしました、ASは3です!

因みに画像呼び出しは
var img1:Loader = new Loader();
img1.load(new URLRequest("画像アドレス"));
addChild(img1);

という感じで書いてます。
宜しくお願いします。
202Now_loading...774KB:2009/02/18(水) 19:12:58 ID:5JjW5ZLS
>>198
あー、すいません。説明不足でした。
mtr = shipM.transform.matrix; のmtrとは、コンストラクタの前で var mtr:Matrix; と宣言
したものです。本来 var mtr:Matrix = shipM.transform.matrix; と一気に書きたいのですが、
これだとエラーになるので分離して書いています。

this.shipM.scaleX=0.1; を mtr = shipM.transform.matrix; の後の方に書きましたが変化
はありませんでした。また、Event.ENTER_FRAME の関数内に置いても駄目でした。

どうしたものでしょうか?

203Now_loading...774KB:2009/02/18(水) 19:14:51 ID:dDjiTrCt
>>201
addChild(img1);
の後で
addChild(テキストボックス);
で深度を調整してやればいけんじゃないかな
204199:2009/02/18(水) 19:59:13 ID:m4fsEnEs
>>203
おお…!有難うございます、助かりました!
205Now_loading...774KB:2009/02/18(水) 20:20:49 ID:5JjW5ZLS
>>202です(自己レス)

小細工的ですが、 mtr.scale(0.2, 0.2) で縮小できました。ただし、これだと
MCの基準点縮小ではなくMCの左上を基準に小さくなりましたので、mtr.translate();
で場所を調整しました。

scaleXは色々試しましたが駄目でした。
206Now_loading...774KB:2009/02/18(水) 23:40:15 ID:RDxLiEQ0
質問です
AS2で書いてます。

setTimeout()で仮に下記のような場合、

ID=setTimeout(hogeFuntion,3000)

hogeFuntionに引数を渡した状態でhogeFuntionを呼び出すにはどうすればいいでしょうか?

たとえば、hogeFuntion(hoge)みたいな感じにです。
207Now_loading...774KB:2009/02/18(水) 23:52:50 ID:wWFSZb4F
>>206
FLASHのヘルプって、結構、役に立つんだぜ。まずはヘルプ検索。

functionReference:Object - 実行する関数の名前。引用符や括弧を使用しないでください。また、呼び出す関数にパラメータを指定しないでください。たとえば、functionName を使用します。functionName() や functionName(param) は使用しないでください。
delay:Number - 関数が実行されるまでの遅延時間 (ミリ秒単位)。
args:Object - 関数に渡すゼロ個以上の引数 (複数の引数はコンマで区切ります)。

var my_timedProcess:Number = setTimeout(my_delayedFunction, 2000, "two second delay");
function my_delayedFunction (arg1) {
trace(arg1);
}
208Now_loading...774KB:2009/02/19(木) 00:03:21 ID:lFwRciuU
↓のフラッシュのタイトルで「しょぼのえにっき」という文字がぶよぶようごいていますがこういう処理を一般的になんという名前で呼ぶのでしょうか。
http://wacha.cc/2004/04/24.html
209Now_loading...774KB:2009/02/19(木) 00:20:30 ID:vqs49seI
>>208
モーショントゥイーンかな。

もっと細かく制御するなら、MC(ムービークリップ)を複数個置いて、それらの
透明度alphaを0にしてMC間を結ぶ線を引く。そして、MCを振動させれば線自体も振動する。
つまり右の感じ: ○━━━━━━○
210Now_loading...774KB:2009/02/19(木) 01:08:45 ID:4TQNAH06
>>208
震える文字w

http://mclover.net/Program/Ugo.htm
これでGIF保存して読み込め
211Now_loading...774KB:2009/02/19(木) 02:47:40 ID:nxm9KMX5
>>208
これはね、script制御ではないよ。
文字のラインがflashのペンツールで書いたっぽい雰囲気だから
3,4フレームくらい使って微妙にずれた文字を手書きしてるだけだね。
それらのフレームを往復再生させるか、
フレームを反転させてケツにくっつけるだけ。
シェイプトゥイーンを使ってるかも知れない。
処理の一般的な名称は聞いたことない。
212Now_loading...774KB:2009/02/19(木) 04:29:42 ID:KUWkrRlJ
ぶるぶる文字でしょう
213Now_loading...774KB:2009/02/19(木) 07:38:35 ID:2bW4/+2R
>>209-212
ありがとうございました。
なるほど。ズレた画像をコマ送りしているんですね。
214Now_loading...774KB:2009/02/19(木) 08:48:06 ID:l+ZvQ4gp
>>207

おお!ありがとうございます。
助かりました。
これからはヘルプできるだけ参照するようにします。
215Now_loading...774KB:2009/02/19(木) 14:46:29 ID:F8oIDZWf
「もし、変数 val1〜val100までの変数が、全部trueだったらファンクションAを実行」
という条件分岐を最も簡潔に書くとどうなりますか。
216Now_loading...774KB:2009/02/19(木) 15:43:07 ID:ReD0XMTZ
>>215
その前に変数val1-100は配列にしようぜ
217Now_loading...774KB:2009/02/19(木) 16:04:29 ID:QrwUW6ut
配列にする
forループでfalseがあったらbreakかreturn
218Now_loading...774KB:2009/02/19(木) 16:16:55 ID:e6VX3syL
>>178
残念ながらシングルトンに関しては
もちろん作れなくは無いが、C++のようにSingletonテンプレートクラスが
作れないので、クラスごとにシングルトンのコードをコピペしなきゃならない。
それはそうと、privateやprotectedのコンストラクタが認められないのは何か理由が
あるんだろうか?

219Now_loading...774KB:2009/02/19(木) 16:37:58 ID:dYT4F0qQ
WinXP-ProのFlashCS3ProのAS3.0です。

(何か余計なキーを押したらしく)ASファイルのコーディングで上の自動フォーマットボタンを押すと、
 次の行の近くに自動フォーマットのエラーがあります ・・・〜・・・

のメッセージが出ます。
しかし、この周囲を見渡しても特に間違いはなく、念のため「・・・〜・・・」の行の周囲の行を含めて
消して再度自動フォーマットボタンを押しても、消した次の行で同じメッセージが出ます。

考えられる原因は何でしょうか? 
過去に作った問題ないASファイルでも同じメッセージが出ます。
220Now_loading...774KB:2009/02/19(木) 16:45:59 ID:F8oIDZWf
>>216、217
THANKS.
221Now_loading...774KB:2009/02/19(木) 16:46:57 ID:3A0q3IzD
>>219
自動フォーマットなんかに頼ってることが一番の問題の原因だと思います
222Now_loading...774KB:2009/02/19(木) 16:52:01 ID:CFeIOpuv
>>215
arrayに変数を入れといて
var i:int = 0;
for each(var val:Boolean in array) i += val;
if (i == array.length) functionA();
223Now_loading...774KB:2009/02/19(木) 17:42:06 ID:F8oIDZWf
>>222
短っ!!!
224Now_loading...774KB:2009/02/19(木) 17:56:00 ID:QrwUW6ut
Boolをオートキャストで加算って、、、
しかも変数2つって、、、
必ず全てのインデックス分加算処理を行ってから判定するなんて、、、
225Now_loading...774KB:2009/02/19(木) 18:01:18 ID:brWzT07w
無駄なレスより役に立つ
226Now_loading...774KB:2009/02/19(木) 19:16:19 ID:327XBfXT
一行
if (array.sort()[0]) functionA();
227Now_loading...774KB:2009/02/19(木) 19:49:17 ID:24M0M8+g
>>226
それは気づかんかったわw
まあ、オーソドックスな方法は
var exe:Boolean = true
for each(var val:Boolean in array)
if ( !val ){ exe = false;break;}
if (exe) functionA();
こんなところでしょうなあ。
228Now_loading...774KB:2009/02/19(木) 20:13:55 ID:4TQNAH06
行数稼ぎたいのか処理速度を稼ぎたいのかで変わってくるよね。
>>222 型変換のコスト
>>226 ソートのコスト
>>227 forループ内でifするコスト

俺なら速度重視で
Booleanじゃなくてintかuintのvector配列
intかuintの1か0でtrue/falseを表す
配列要素をループで加算
総和で判定
ってするだろうけど、ごめん、vector使った事無いんでサンプル書けない。
229Now_loading...774KB:2009/02/19(木) 21:33:39 ID:ZDN/jbQO
for(var i:Number = 0;i < array.length;++i)
{
 if(!array[i])break;
}
if(i == array.length)
{
 funcA();
}

無難かな……ちょっとiのスコープに自信ないが確かいけたはず
230Now_loading...774KB:2009/02/19(木) 22:05:11 ID:tYtvE5XW
>>228
それでどのくらい速度が違うの?
231Now_loading...774KB:2009/02/19(木) 23:03:45 ID:24M0M8+g
>>229
Numberのカウンタは効率が悪いとどこかで見た気がする。
intにできるところはintにすべし、とのことだった。まああたりまえだが。

>>226はネタとしては面白いけど毎回ソートするってのはどうも・・
それに配列の順番も変わるという副作用つきだ。
232Now_loading...774KB:2009/02/19(木) 23:31:01 ID:l+ZvQ4gp
>>219
全角スペース入ってるかも。
俺もたまにそれやるから、エラー出た行を
一旦全部消して書き直すと出なくなること多い。
233Now_loading...774KB:2009/02/19(木) 23:33:39 ID:4TQNAH06
Numberは遅いね。あと、
var len:int = array.length;
for(var i:int = 0;i < len; i++)
みたいにarray.lengthを移した方が速いです。

>>230
やってみないとわかんないなぁ、やれってか?
100個ぐらいのループだと差が出なさそうだなぁ、PC速いし。
234Now_loading...774KB:2009/02/19(木) 23:33:47 ID:KUWkrRlJ
ユーイント使え
235Now_loading...774KB:2009/02/19(木) 23:45:55 ID:ZpBZmRND
stopAllSounds();
で止めた音楽を再び再生するにはどうすればいいですか?
236Now_loading...774KB:2009/02/20(金) 00:14:40 ID:IEsg0YTc
AS3で外部画像を読み込んで座標を指定して表示させているのですが、同じ画像を違う座標でいくつも表示させたくて、でも座標をずらして記述しても、前述のものが上書きされてしまうようで複数表示が出来ません。

なので今は表示させたい個数分だけ変数を作り、Loaderで都度画像のアドレスを読み込んでいます。

どうにかうまいやり方はないでしょうか。
宜しくお願いいたします!
237Now_loading...774KB:2009/02/20(金) 00:27:02 ID:n0EDCyUp
>>230 やってみた。
// array
var a:Array = new Array();
for (var i:uint = 0; i < 100; i++) a.push(i&1);
var sum:uint = 0;
var st:uint = getTimer();
for (i = 0; i < 100; i++) sum += a[i];
var et:uint = getTimer();
if (sum == 100) trace("execute funcA()");
trace("dt = " + (et - st));
// sort
var s:Array = new Array();
for (i = 0; i < 100; i++) s.push(i&1);
sum = 0;
st = getTimer();
var ret:uint = s.sort()[0];
et = getTimer();
if (ret) trace("execute funcA()");
trace("dt = " + (et - st));

手元のPCではarray足し算だと0ミリ秒、sortすると2ミリ秒。
>>226みたな記述は面白くて好きだけど遅いですね。
ちなみに要素数を1000だと195ミリ秒。

ただ、この例だと配列の中身は0101010...なんだけど、0だけとか
1だらけにするとsort()も数ミリ秒レベルになったけど、
前半500要素を1、後半500要素を0のデータにしたのをsortしたら350ミリ秒に。
238Now_loading...774KB:2009/02/20(金) 00:41:07 ID:xplKxO1Z
>>236
静止画像だよね?

var bmd:BitmapData = new BitmapData(loader.width,loader.height);
bmd.draw(loader); //Bitmapデータに変換

var s0:Shape = new Shape();
var s1:Shape = new Shape();

//Shapeに画像を描きこむ
var g:Graphics = s0.graphics;
g.beginBitmapFill(bmd, null,false,true);
g.drawRect(0,0, loader.width, loader.height);
g.endFill();

g=s1.graphcis;
g.beginBitmapFill(bmd, null,false,true);
g.drawRect(0,0, loader.width, loader.height);
g.endFill();

これで静止画を表示するふたつのShapeができるから
座標を適当に設定してaddchildすればよい。
ただし、オリジナルの画像ファイルをネットからツモってくる場合はこの方法は使えないことがある。
239Now_loading...774KB:2009/02/20(金) 00:47:30 ID:xplKxO1Z
効率を気にしだしたらここらのサイトが参考になる
http://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767
こちらは英語だが一読に値すると思う。(今発見したばかりだが・・)
http://www.kirupa.com/forum/showthread.php?t=223798
240237:2009/02/20(金) 00:48:51 ID:n0EDCyUp
vector初体験。
// vector
var v:Vector.<uint>;
v = new Vector.<uint>();
for (var i:uint = 0; i < 1000000; i++) v.push(i&1);
var sum:uint = 0;
var st:int = getTimer();
for (i = 0; i < 1000000; i++) sum += v[i];
var et:int = getTimer();
if (sum == 1000000) trace("execute funcA()");
trace(et - st);
// array
var a:Array = new Array();
for (i = 0; i < 1000000; i++) a.push(i&1);
sum = 0;
st = getTimer();
for (i = 0; i < 1000000; i++) sum += a[i];
et = getTimer();
if (sum == 1000000) trace("execute funcA()");
trace(et - st);
// array boolean
var ab:Array = new Array();
for (i = 0; i < 1000000; i++) ab.push(true); // 最悪ケース
st = getTimer();
for (i = 0; i < 1000000; i++) if (!ab[i]) break;
et = getTimer();
if (i == ab.length) trace("execute funcC()");
trace(et - st);
vectorだと11ミリ秒でarrayだと43ミリ秒。booleanで15ミリ秒。ちゃんとテストするなら何十回か繰り返して平均取るとかしないとダメなんだけど。true / falseの型変換とかif文でのチェックとかがもう少し重いかと
思ったけど、arrayの加算より速いのはなんで??なんか間違えてる?
241Now_loading...774KB:2009/02/20(金) 00:49:50 ID:cV/l2hJ1
forとfor eachの使い分けはみんなどうしてる?

for(var i:int=0; i<arr.length; i++)
for each(var i:int in arr)
242Now_loading...774KB:2009/02/20(金) 01:12:13 ID:xplKxO1Z
>>240
arrayより遅かったらvectorの存在意義がないじゃないか。
arrayの実体は要するにStringをキーとするマップだからね。
もうちょっと効率のいいコレクションクラスを作れってんで
後からできたのがvectorてことじゃないかな。
243237:2009/02/20(金) 01:44:52 ID:n0EDCyUp
>>242
vectorが速いのは文句ないのです、気に入りました。
みんなPLAYER10をさっさと入れろと思いました。

arrayをuintで入れて加算するよりも、booleanをifで条件分岐
する方が速いのが妙だと思ったんですが、なるほど、arrayは
連想配列だから、uintからなんか変換&変換&算処理より、
booleanからの変換&ifのがコストがかからないってことかな。
244236:2009/02/20(金) 06:20:48 ID:IEsg0YTc
>>238
なるほど、こうするのですね。とても参考になりました。
有難うございます!
245Now_loading...774KB:2009/02/20(金) 08:54:28 ID:Rm4nzBzM
配列の中の数字が一番多いものから順に
並び替えをしたいです。
配列三つ作って、ひとつずつ中身を取り出して
もし最初の数値より大きい数字だったら配列0の中身を置き換え…
というのを配列の数だけfor文でまわしています。
もしかしてこれ、もっとあっさりかけますか?
AS3です。
246Now_loading...774KB:2009/02/20(金) 09:29:11 ID:CYSHzkUB
AS3です。
変数名自体に変数を使う、というのは不可能なんでしょうか。

また、
if(…){
}else{
}
のような文で、ifとelseの中に同じ変数名を定義したら重複した名前の変数があるとエラーが出ますがこれは一体どうしたら…
247Now_loading...774KB:2009/02/20(金) 09:42:35 ID:HFHNffaB
>>246
>変数名自体に変数を使う、というのは不可能なんでしょうか。
配列アクセス演算子で検索

>一体どうしたら…
変数を if 文の外で宣言する
var a:uint;
if(…){
a = 1;
}else{
a = 2;
}
248246:2009/02/20(金) 10:11:50 ID:Np/QkVRd
>>247
やり方があるんですね、調べてみます。

定義を変数外でやれば良かったんですね、重ね重ね有難うございます!
249Now_loading...774KB:2009/02/20(金) 10:42:36 ID:4mAsSJxs
>>245
配列3つってよくわからんが、配列の要素を並べ替えたいならsort
250Now_loading...774KB:2009/02/20(金) 16:17:04 ID:ZHrNnPb7
FLASHから、getURLとかで別のフラッシュを開くときにフルスクリーンにしたいときってどうすればいいですか?
ジャバスクリプト呼び出さんとだめなんですか?
251Now_loading...774KB:2009/02/20(金) 17:35:49 ID:1spKPEzO
自分自身ならフルスクリーン化可能
別のフラッシュをフルスクリーンで開くのは多分無理
フルスクリーンじゃなくて画面いっぱいのウィンドウでいいならjs
252Now_loading...774KB:2009/02/20(金) 21:21:31 ID:eL8RfDB1
actionscriptにマウスを操作するようなライブラリ(JavaのRobotみたいなもの)
ってありますか?どなたかご存知でしたらお願いします。
253Now_loading...774KB:2009/02/21(土) 00:15:41 ID:u1qaRBAT
OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0)

ステージ上に適当に重ねられた複数のMCをムービー開始時にswapChildrenAt()で(あるいは
他の方法で)自動的にソートするにはどうしたら良いでしょうか?
現在の例ならば、上からmc4, mc2, mc1, mc5, mc3 と5個無造作に重なったものを上から
mc1, mc2, ・・・とソートする感じです。

よろしく願います。
254Now_loading...774KB:2009/02/21(土) 00:49:31 ID:whMuXLhw
>>253
ソートするルールを決めて
ソートするスクリプトを記述する
上記の例ならば、各mcのインスタンス名にある数値を取得して
その数値順に配置し直すスクリプトにすればよい
255Now_loading...774KB:2009/02/21(土) 01:34:57 ID:PlcnWZsc
>>252
サイト開いたらflashで勝手にカーソル動かされて
変なとこクリックさせられたら怖いよねぇ

そういうのを望んでるのかな?
256Now_loading...774KB:2009/02/21(土) 03:02:02 ID:u1qaRBAT
>>254
有難うございます。addChildAtの性格が分かれば、さほど難しくはなかったです。
for (var id=0; id<5; id++) {
this.addChildAt (this["mc"+(id+1)],0);//thisはステージ
}
を実行するとmc1が0に位置に行き、同じくmc2も0・・・ で、下への滑り込みを
繰り返して並べることが出来ました。
257Now_loading...774KB:2009/02/21(土) 05:14:08 ID:iDVjkB9q
>>255
結構制約が厳しいからねえ。
絶対そんなライブラリないだろうし、作れないだろうと思う。
258Now_loading...774KB:2009/02/21(土) 06:25:14 ID:Amk0DNZ1
よろしくおねがいしますーー
classの中に自分で関数を定義して、使うのはできるのですが、Key.DOWNの中から
呼び出すと、undefinedになってしまいます。どうすれば、イベントリスナの中から
呼び出せますか?
259Now_loading...774KB:2009/02/21(土) 06:36:53 ID:Amk0DNZ1
>258続き
class Menu1 {
static function main () {
var app:Menu1 = new Menu1(_root);
}
function Menu1(path) {

var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
switch (Key.getCode()) {
case Key.UP :
hoge();
break;
}
};
Key.addListener(keyListener_obj);
}
//関数
function hoge():Void{

return s;
}
}
260Now_loading...774KB:2009/02/21(土) 10:42:38 ID:eJq84mWd
AS3.0、Flash・cs3です
ブラウザサイズ変更時に、画面中央にムービークリップを常に置いておく方法で
中央配置したいムービークリップをmcとして
stage.addEventListener(Event.RESIZE, r);
private function r(event:Event):void {
if(stage.stageWidth > 600) {
this.x = stage.stageWidth / 2 - mc.width / 2;
}
if(stage.stageHeight > 600) {
this.y = stage.stageHeight / 2 - mc.height / 2;
}
}
この様にしていたのですが、この方法だとマウスでブラウザサイズを変更した瞬間から常に中央位置へとmc動いてしまいます
よくflashサイトで見かける動作で、ブラウザサイズを変えている(マウスドラッグ移動でブラウザを広げor縮めている)間は
中央に配置しているオブジェクトは動かず、サイズ変更が終わった(マウスの移動を止めた)時点で画面中央へ
オブジェクトが移動して来るというのを見かけます
あれはどうやって指定してあるのでしょうか?宜しくお願いします。
261Now_loading...774KB:2009/02/21(土) 13:57:56 ID:5DQ3HUDF
>>258
2.0だとその辺はDelegate使うのが一番楽じゃないかな

import mx.utils.Delegate;
class Menu1 {
//コンストラクタ
function Menu1() {
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = Delegate.create(this, function () {
switch (Key.getCode()) {
case Key.UP :
hoge();
break;
}
});
Key.addListener(keyListener_obj);
}
//関数
function hoge():Void {
trace("hoge");
}
}
262Now_loading...774KB:2009/02/21(土) 14:00:41 ID:L280k9XR
>>260
タイマーでやってみたらどうですか?
timer = new Timer(500);//マウスでリサイズ後に呼ばれる用タイマー(数値はお好みで)
timer.addEventListener(TimerEvent.TIMER, onTimer);
stage.addEventListener(Event.RESIZE,onResize);

private function onTimer(e:TimerEvent):void {//リサイズ後
timer.stop();
//リサイズ処理
}

public function onResize(ev:Event):void{//リサイズ中
timer.reset();//タイマーリセット
timer.start();//タイマースタート
}
263Now_loading...774KB:2009/02/21(土) 14:14:33 ID:L280k9XR
>>262
>public function onResize(ev:Event):void{//リサイズ中
FDで自動生成したらpublicになっちゃったけどprivateでおkです
private function onResize(ev:Event):void{//リサイズ中
264Now_loading...774KB:2009/02/21(土) 14:52:12 ID:2HywzxUv
>>260
javascriptのonRisizeイベントハンドラーは反応遅いから、それつかったらどうだろうか

こんな感じ
.js-------------
window.onresize = function() {
flashID.reSizeHandler();
}
265Now_loading...774KB:2009/02/21(土) 14:58:28 ID:2HywzxUv
ちょっと、困ってます。
FirefoxのFlashTracerが動かなくて困ってるんです。

こんなエラーが出てます。
flashlog.txt file does't exists. Open settings dialog first.

mm.cfgはこんな感じ
ErrorReportingEnable=1
TraceOutputFileEnable=1

flashlog.textにはちゃんとtraceログが出力されてるけど、
Tracerに表示できないって感じです。

よろしくお願いします。
266264:2009/02/21(土) 15:01:23 ID:2HywzxUv
>>260
ああ、すまん。
FFはリサイズ後だが、IEはリサイズ中にもイベントが出てるみたいだわ
http://www.openspc2.org/JavaScript/reference4/event/onResize/sample1/index.html
267Now_loading...774KB:2009/02/21(土) 15:13:04 ID:be+HGCyf
>>265
最初にflashlog.txtがある場所を指定しないといけないんじゃなかったっけ
268Now_loading...774KB:2009/02/21(土) 15:39:18 ID:2HywzxUv
>>267
なんとなく原因がワカタ

C://直下に「flashlog.txt」をコピペしてみて、試したら。読み込んだ。。。orz
原因はたぶんパスが
C:\Documents and Settings\日本語\Application Data\Macromedia\Flash Player\Logs\flashlog.txt
ってなってて、日本語があるからかも。。

どうしろと。。。
269265:2009/02/21(土) 15:52:17 ID:2HywzxUv
あきらめた
Logはでてるから、このソフト使った。
ttp://bitmap.dyndns.org/blog/archives/001306.html
270Now_loading...774KB:2009/02/21(土) 16:02:23 ID:be+HGCyf
>>268
ユーザー名に2バイト文字使うなww
271Now_loading...774KB:2009/02/21(土) 17:36:40 ID:cFPSqgTs
質問です。
AS2.0で書いてます。
重力表現で、完全に動きが止まってから、mcのonEnterFrameを削除したいのですが、
if文をどう書いたらいいかわかりません。
どうしたらいいでしょうか。

var gravity:Number = 9;
var bounce:Number = -0.7;
var vy:Number = 0;


function mc_Gravity(mc:MovieClip, Bottom:Number):Void {
var radius:Number = mc._height/2;

mc.onEnterFrame = function():Void {

vy += gravity;
this._y += vy;


if (this._y+radius>Bottom) {
this._y = Bottom-radius;
vy *= bounce;
}

};
}
272Now_loading...774KB:2009/02/21(土) 18:00:07 ID:whMuXLhw
1フレームごとの移動量を別途計算して
一定移動量以内の場合停止したと見なせばよい
273Now_loading...774KB:2009/02/21(土) 18:31:15 ID:bwkzw5vZ
>>272
それだとバウンドした後の頂点で止まってしまう。

バウンドのvy *= bounce; 後に
vyがある小さな値(0.01とか)より小さいかどうか判定すればいいんでないか?
ただし、vyは正負が反転してるので、
絶対値をとるか、-0.01より大きくなったらとするか、
そんな感じかね。
274Now_loading...774KB:2009/02/21(土) 18:56:24 ID:whMuXLhw
一つ一つ順を追って解決していけばいいだけの話
いっぺんに行なうから混乱するんだ
275Now_loading...774KB:2009/02/21(土) 19:08:17 ID:bwkzw5vZ
>>274
混乱なんてしてないが?
完全に動きが止まるのは必ずバウンドの際。
反発の速度が極小になったかどうかを判定するだけだから、
概念としてもわかりやすいと思うが?
276Now_loading...774KB:2009/02/21(土) 19:13:01 ID:cFPSqgTs
>>273さんのアドバイスをもとに、ちょっとコード変えたら何とか出来ました。
スマートじゃないですけどw
ありがとうございました。
var gravity:Number = 9;
var bounce:Number = -0.7;

function mc_Gravity(mc:MovieClip, Bottom:Number):Void {
var radius:Number = mc._height/2;
var vy:Number = 0;

//追加した部分
var old_y:Number;
//-------------
mc.onEnterFrame = function():Void {
vy += gravity;
this._y += vy;
//追加した部分
if ((old_y-this._y)-(this._y-old_y)==-10.5) {

delete this.onEnterFrame;
}
//-------------
if (this._y+radius>Bottom) {
this._y = Bottom-radius;
vy *= bounce;
old_y = this._y;
}

};
}
277Now_loading...774KB:2009/02/21(土) 19:26:45 ID:M8pVizoK
if ((old_y-this._y)-(this._y-old_y)==-10.5) {
を数学的に式の展開とかしたら
if (old_y-this._y == -5.25) {
になると思うんだが、それはともかく。

いくつか問題がある。
まず、Numberは一定の値と比較するのはまずい。
必ず誤差がが含まれる。
-5.250000000000000001みたいなことがあり得る。だから
==で比較しちゃダメ。

あと、>>273がいう>>272がまずい点は、跳ね返りのタイミングで
移動量が0や小さな値になる場合があるってこと。
1フレ目:|   ←○
2フレ目:|   ○→
跳ね返って来た場所が1フレ前と距離○1個分だけど、移動した距離は
左側の板まで行って帰ってきた分だから単に位置の差だと正しくない。
278Now_loading...774KB:2009/02/21(土) 21:06:34 ID:Amk0DNZ1
>>261
ありがとうございました。きっかけはわかりました。
mtascでやっているので、delegateクラスをみつけてきてやっているのですが
まだできていません。
279Now_loading...774KB:2009/02/21(土) 21:57:29 ID:MRcpnxJe
>>278
delegateを使う必要があるの?

class Menu1 {
    static function main () {
        var app:Menu1 = new Menu1(_root);
    }
    function Menu1(path) {
        var keyListener_obj:Object = new Object();
        var me:Menu1 = this;
        keyListener_obj.onKeyDown = function() {
        switch (Key.getCode()) {
            case Key.UP :
                me.hoge();
                break;
            }
        };
        Key.addListener(keyListener_obj);
    }
    //関数
    function hoge():Void{
        trace("hoge");
    }
}
280252:2009/02/21(土) 23:43:20 ID:Po/XtmxO
>>255 >>257
ありがとうございました。Flashで入力支援みたいなことってできるかなーと。
最近Flashでけっこういろいろやってみるのが楽しくなってきたのでw
多くの人がVM(というかFlashPlayer)は持っているのでアプリ配布しやすいですしね。
281Now_loading...774KB:2009/02/22(日) 00:56:59 ID:XWXx11pz
環境:WinXP-ProでFlashCS3-ProのAS3.0です。

外部よりLoader(var swfLoader:Loader)で読み込まれたSWF内のフラグの参照がうまく
行かず困っています。
これは、アパートの部屋に引越して来た住人の旗の上げ下げを管理人の子供(mc1)を
使って確認するというものです。

入居する外部SWFを「external_1.swf」として、このフラグ(nextSeenF)の真偽はexternal_1.swf
内のMC(nextB)をクリックすることで切り替えます(入居人の子供で切り替わる)。
ASファイルでは、
var swfLoader:Loader = new Loader();
var loadEvt:Event;
と宣言して
private function initLoad_on (loadEvt):void {
trace ("nextSeenF= "+loadEvt.target.content.nextB.parent.nextSeenF);

}

の場合は初期値のfalseが表示され参照出来るのですが、その次の記述では下のようになります。
private function mc1_click (loadEvt):void{//mc1を押す
trace ("nextSeenF= "+loadEvt.target.content.nextB.parent.nextSeenF)
// TypeError: Error #1010: 条件は未定義であり、プロパティがありません
}

まとめると、入居者が引っ越した瞬間はフラグ確認できるのですが、その後に管理人の子供
からは確認できない状況です。

どなかたアドバイス願います。
282Now_loading...774KB:2009/02/22(日) 03:14:00 ID:qp7aQk+J
??おかしな点が色々あるような・・・?
まずvar loadEvt:Event; この宣言は意味がないのでは?

察するにコードのどこかに
(nextBのオブジェクト).addEventListener(MouseEvent, mc1_click);
があるんですよね。ならば
private function mc1_click(e:MouseEvent):void
{
trace(e.currentTarget.parent.nextSeenF);
}
でうまくいくと思いますが・・・
283Now_loading...774KB:2009/02/22(日) 03:16:31 ID:qp7aQk+J
(nextBのオブジェクト).addEventListener(MouseEvent.CLICK, mc1_click);
失礼。訂正。
284Now_loading...774KB:2009/02/22(日) 04:15:54 ID:XWXx11pz
>>282
レス有難うございます。今回の模式図(?)は下のような感じです。

入居者SWF ・・・ ( ● )  子供MC「●」を含んでいる
管理人SWF ・・・ [  ★  ]  これも子供「★」をを含んでいる
これらは、外部SWF読み込みで

[ ★ ( ● )] の形になり、●(nextB)を押して入居者フラグをtrueにする → ★(mc1)を押して
管理人側から確認
という流れです。(nextBのオブジェクト).addEventListenerに関して言えば、これは●自身の
タイムラインに 
this.addEventListener (MouseEvent.CLICK, this_click); 
function this_click (mouseEvt:MouseEvent) {
MovieClip(parent).nextSeenF=true;
}
と書いてあり、mc1の動作とnextBの動作は完全に独立しています。

とりあえず、「var loadEvt:Event; この宣言は意味がないのでは? 」ということなので、
ここから修正してみます。
285Now_loading...774KB:2009/02/22(日) 04:33:17 ID:qp7aQk+J
ああ、なるほど。ちょっと勘違いしていたようだ。
private function mc1_click (loadEvt):void{//mc1を押す
trace ("nextSeenF= "+loadEvt.target.content.nextB.parent.nextSeenF)
// TypeError: Error #1010: 条件は未定義であり、プロパティがありません
}
多分、loadEvt.targetがswfLoaderと一致しないんでしょう。
trace(loadEvt.target as Loader);はnullとなるはずです。

private function mc1_click (loadEvt):void{//mc1を押す
if (loadEvt.currentTarget!=swfLoader) return;
trace ("nextSeenF= "+loadEvt.target.content.nextB.parent.nextSeenF) ;
}
としてみては?

286Now_loading...774KB:2009/02/22(日) 06:46:46 ID:/E35eGfO
>>279
ありがとうございました。 あっさりできました。
var me:Menu1 = this;
287281&284:2009/02/22(日) 15:27:42 ID:hWuIXjn6
>>285
どうも。
if文の中に trace ("不一致: "+loadEvt.currentTarget); を1行入れて試したところ、
エラーは何も出なかったですがフラグ情報も出ませんでした。
(追加のtraceでは 不一致: [object MC1] と出ます)。

別案として、var loadEvt:Event; の代わりに var loadEvt1:Event; を置いて、
private function initLoad_on (loadEvt:Event):void {} の中で loadEvt1=loadEvt; として
管理人の子供クリック private function mc1_click (mouseEvt:MouseEvent):void {}
で trace ("nextSeenF= "+loadEvt1.target.content.nextB.parent.nextSeenF);
とするとOKでした。

つまり、イベント情報オブジェクトを移し変えて参照する形です。
(余りスマートでは無いかも知れませんがw)
288260:2009/02/22(日) 22:46:58 ID:/uwA99JQ
>>262
>>263
教えて頂きありがとうございました。処理方法でちょっとこんがらかってしまって未だに実装できてませんが
javascriptで指定されてる可能性もあったんですね、そちらの方も調べてやってみようと思います
289Now_loading...774KB:2009/02/22(日) 23:27:35 ID:DDcHG7iJ
フルFlashサイトとか作ってると、いつもメニューボタンのイベントハンドラメソッドに、
サイト内のあらゆる挙動のコードが集中してしまうんだが、
そんなもんかな?

俺の作り方間違ってる?
290Now_loading...774KB:2009/02/22(日) 23:35:58 ID:/jrNeYyT
間違ってる
291Now_loading...774KB:2009/02/23(月) 01:09:29 ID:TEK5SSvh

attachMovieでランダムに配置したMCを削除してから
別のフレームに飛にはどうしたらよいのでしょうか。
現状、attachMovieで配置したMCと
飛んだ先に配置してあるMCがステージ上で重なってしまうのです。
removeMovieClip();をどのように記載すればよいのか、教えて頂けますでしょうか?

作業環境:MAC OSX FLASH8
292Now_loading...774KB:2009/02/23(月) 02:47:39 ID:6FUYdN4Q
attachMovieで作成したもんを配列に入れたらいい
削除はこんな感じ
for each(var obj:Object in objArr ){
removeChild(obj)
}

巻き添え規制食らって、携帯で打ってるから
辛いぜ
293nagisa:2009/02/23(月) 04:21:23 ID:eS5s4xpt
質問です!Flash8使っています。フルスクリーン表示でステージがリサイズされたときの右上位置固定についてですが、その場合、MC名を仮に Migi とした場合で最右上から縦横に10pxの隙間をあけた位置で固定するには下記コードにどのように追加すればよろしいでしょうか?
--------------------
myStageHeight = Stage.height;
myStageWidth = Stage.width;
resize(myStageHeight,myStageWidth);
Stage.scaleMode="noScale"
Stage.align = "TL";
myListener = new Object();
myListener.onResize = function() {
myStageHeight = Stage.height;
myStageWidth = Stage.width;
resize(myStageHeight,myStageWidth);
}
Stage.addListener(myListener);
function resize(H,W){
Line._width = W;
Title._y = 123;
Title._x = 166;
parH = H/647;
parW = W/1200;
if(parH < parW){
haikei._yscale = parW * 100;
haikei._xscale = parW * 100;
}else{
haikei._yscale = parH * 100;
haikei._xscale = parH * 100;
}
}
--------------------
294Now_loading...774KB:2009/02/23(月) 04:31:01 ID:ks61LeXD
>>289
Flashに限らず、大概のプログラムでは、プログラムの挙動を制御するメソッドを集めたクラスを作って
メニューのハンドラからそれを呼び出す形にしたほうがいいね。こうすると、ツールボタンからも利用できるし
外部のプログラムコードから利用できるように改良することも容易になる。
295Now_loading...774KB:2009/02/23(月) 06:19:19 ID:NckKBoSu
それってもしやインターフェースのこと?
296Now_loading...774KB:2009/02/23(月) 07:59:26 ID:vU0j0VHD
>>294
答えてくれてありがとうです。
そうすることでサイトの高速化がはかれたりするもんですかね?
297Now_loading...774KB:2009/02/23(月) 10:06:31 ID:vU0j0VHD
質問す。
3つ以上の変数に同じ数字がかぶらないように、
乱数代入するにはどうすればいいんでしょうか?

自分は3つ変数作って、
変数AはMath.randomで乱数入れて、変数Bには変数A+1を、変数Cには変数B+1を代入して、
+1することで乱数の上限以上になった場合は1を代入する方法を取ろうと思ったのですが、
これでは完全な乱数ではないので、 なにか良い方法はないでしょうか?
298Now_loading...774KB:2009/02/23(月) 10:25:38 ID:IuGK45cy
黙っててもMath.randomが同じ値を引く確率はかなり低いと思うよ。
ちなみに乱数の上限は1だから、1を加算した時点で上限突破確実だよ?w
299Now_loading...774KB:2009/02/23(月) 11:11:08 ID:KIUz/Y0p
>>297
まあ、乱数自体が被ることはそうないと思うが、
整数に直した値が被って欲しくないとかならこういう手。

var i:int;
var ran:int;
var a:Array = new Array();
a[0] = Math.floor( Math.random() * 11 ); // 例えば0〜10なら。
for( i=1 ; i<3 ; )
{
a[i] = Math.floor( Math.random() * 11 );
if( a[i-1] != a[i] ) i++;
}
300Now_loading...774KB:2009/02/23(月) 12:21:32 ID:b902jtS7
>>297
トランプのようにあらかじめ決められたカードを
十分にシャッフルして、上から3つとるなどすれば同じカードはでない。

1〜10の中から重複しない値を3つランダムなら、
[1, 2, 3, ...10]を十分にシャッフルして
[10, 2, 5, ...3]みたいにして、先頭から3つ[10,2,5]とすれば重複しない。

301Now_loading...774KB:2009/02/23(月) 16:13:47 ID:RR41nWx9
>>299
1つ前のとしか比較してないから、2つ以上前のとかぶる可能性アリ

整数のつもりなら>>300のやり方が一番スマートだと思う
302Now_loading...774KB:2009/02/23(月) 16:45:47 ID:/vteKmUy
>>278
もう見てるかわからないけど・・・。

class Menu1 {
//コンストラクタ
function Menu1() {
var path:Object = this;//クラス内で変数にパス入れておく
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
path.hoge();
}
Key.addListener(keyListener_obj);
}
//関数
function hoge():Void {
trace("hoge");
}
}
}

多分これが一番簡単。


303299:2009/02/23(月) 19:25:57 ID:KIUz/Y0p
>>301
あー。ほんとだ。これはひどい。すんません。
直すとこんな感じですかね。(AS3前提)

var i:int;
var max:int = 10 + 1; // 例えば0〜10なら。
var a:Array = new Array();
var check:Array = new Array( max );
for( i=0 ; i<3 ; )
{
a[i] = Math.floor( Math.random() * max );
if( check[ a[i] ] == undefined ){
i++;
check[ a[i] ] = a[i];
}
}

>>300-301
> 十分にシャッフルして
具体的にはどうやるんでしょうか。思いつかないので教えてもらえると嬉しいです。
304Now_loading...774KB:2009/02/23(月) 20:29:13 ID:Q4Ss3chh
var a,b,c:Number;
var loop:Boolean = true;
while (loop) {
a = Math.random();
b = Math.random();
c = Math.random();
if (a != b && b != c && c != a) loop = false;
}
305Now_loading...774KB:2009/02/23(月) 20:55:11 ID:RR41nWx9
>>303
「Fisher-Yates」で検索
>>304
while(loop) → while(true)
loop = false; → break;
の方が自然
306Now_loading...774KB:2009/02/23(月) 21:12:57 ID:2FYZSbIn
環境:WinXP-ProでFlashCS3-ProのAS3.0です。

外部よりLoader(var swfLoader:Loader)で読み込まれたSWFのフレーム操作が出来ず
困っています。
現在2つのSWF(AとB)があり、A→BでB[A]の形で読み込み、AのフレームをBより操作
しようとしています。つまり、B[A(1)] → B[A(2)] の形です。

ASでは、var tmpMC0:MovieClip=new MovieClip; として、これにイベント情報のオブジェクト
var loadEvt1:Event; を tmpMC0=loadEvt1.target.content; で代入しています。
ここで trace ("totalFrames= "+tmpMC0.totalFrames); とすると、設定したフレーム数(5個)
が表示され、正しく属性を見ていることが分かります。

しかし、
var frameNum:uint=1;
tmpMC0.gotoAndStop (frameNum++);
では確かにframeNumは増加しますが、Aのフレームが2に移動しません。

どうしたら良いでしょうか?
307Now_loading...774KB:2009/02/23(月) 21:21:32 ID:RR41nWx9
tmpMC0.gotoAndStop (++frameNum);
308Now_loading...774KB:2009/02/23(月) 21:36:21 ID:dlrf6Y22
>>304
100個のときはどんすんの?
309Now_loading...774KB:2009/02/23(月) 21:57:43 ID:ksE9zHGY
>>307
有難うございます。
前方でインクリメントをするんですね。
310Now_loading...774KB:2009/02/24(火) 01:34:28 ID:L56G43Rt
3個以上という前提を無視w
311Now_loading...774KB:2009/02/24(火) 06:19:55 ID:IWbryFo0
MC内のダイナミックテキストで質問です。
WinXPでAS3.0(CS3)です。

http://uproda11.2ch-library.com/src/11161649.jpg のように長方形オブジェクトの
上のレイヤーにダイナミックテキストを置き、このMC自体を this.buttonMode=true;
で選択できるようにしました。
ところが、マウスを上に重ねるとダイナミックテキストの部分でマウスの指マークがテキスト
選択の縦棒(| テキストカーソル?)になり見た目に都合が悪いです。

どうしたら良いでしょうか?
小細工的にダイナミックテキストの上のレイヤーに透明グラフィックを置きましたが改善
されませんでした。
312Now_loading...774KB:2009/02/24(火) 08:41:24 ID:6zz2c9rd
>>308
>>310
変数を配列にして、for文とかでループで100回させればおk
loopの値判定もな
313Now_loading...774KB:2009/02/24(火) 09:16:45 ID:L56G43Rt
要求にもよるが、例えば0-1000のランダム値を100個得たいとすると
1)1-1000を配列に格納して最低でも1000回のrandom呼び出しして頭から100個(安定)
2)ランダム値を100個分の配列に重複チェックしつつ格納(不安定)
のどっちかになるんじゃないかな
314Now_loading...774KB:2009/02/24(火) 09:17:31 ID:L56G43Rt
1)はシャッフルの時のランダム呼び出しね
315Now_loading...774KB:2009/02/24(火) 09:52:35 ID:gOhhoi2Q
>>311
選択不可にしたらいい
316Now_loading...774KB:2009/02/24(火) 11:56:31 ID:hm5M2EDb
XP CS3 AS2.0で製作しているflashについて質問があります。

_root上のタイムラインに関数を作っているのですが
それを1階層下のボタンインスタンスから呼び出す事が出来ません。
_root上から関数の実行は出来るのですが1階層下のボタンインスタンスから
on(press)で実行させようとすると実行できません。

以下コード
============タイムライン上の関数=======================
System.useCodepage = true;
function funk(yomi) {
_root.rink_mov.loadVariables(yomi);
_root.rink_mov.onData = function() {
dina_txt.htmlText = str;
dina_txt.textColor = 0x0000AA;
};
=====================================================
-------------ボタンインスタンスのコード------------------
on(press){
funk("rink.txt");
}

いろいろ試してみたのですがどうも関数が実行されていないようなのです。
何故なんでしょうか?教えていただける方がおられましたら
教えていただけると嬉しいです。
317Now_loading...774KB:2009/02/24(火) 12:13:13 ID:B5LdlpOf
>>361

on(press){

_root.funk("rink.txt"); // _rootが抜けてる

}
318Now_loading...774KB:2009/02/24(火) 12:23:00 ID:hm5M2EDb
>>317
ありがとうございます!
動きました・・・・orz

319Now_loading...774KB:2009/02/24(火) 17:45:50 ID:lt2Pia6E
このフラッシュを作りたいのですが・・・

http://blog.crooz.jp/usr/ykzc/mao0001/top.php

誰か教えてください。
320Now_loading...774KB:2009/02/24(火) 18:05:55 ID:hjFpuXe/
suzukaというソフトがあるようだが、それで作ったのでは?
321Now_loading...774KB:2009/02/24(火) 18:21:44 ID:hSNqUXHj
stage.displayState = StageDisplayState.FULL_SCREENに設定したとき、
stage.fullScreenSourceRectと実解像度のアスペクト比誤差によって上下(または左右)にバーが出ますよね?
このバーの色を再生時間に応じて動的に変えたいのですがどうすれば良いでしょうか?
環境はFlexSDK3.3.0(AS3)、FlashPlayer10.0.12.36。IE7/Firefox3/Opera9.6/Safari3.2で表示出来るようにしたいです。
322Now_loading...774KB:2009/02/24(火) 18:55:11 ID:rLlko2TG
初歩的な質問かと思いますがお願いします。actionscript3.0です。
配列に入っている物をランダムに取り出したいのです。
array[0] = "abc";
array[1] = "def";
array[2] = "ghi";
array[3] = "jkl";
この4つの中身を、
for(i=0; i<4; i++)
for文で4回取り出す処理を繰り返し、array[?]が3→2→0→1や1→3→0→2とか、順番はランダムでも取り出す対象は重複しないようにしたいのです。
Math.floor(Math.random()*4)を使ってみてますが、他にそういった処理をしてくれる関数や方法などありませんでしょうか?

323Now_loading...774KB:2009/02/24(火) 19:09:19 ID:2zWz5ACg
>>322
ちょっと前のレスに似たような質問が・・
てかこっちの方が簡単。取り出し順配列を作ってシャッフルするだけ。
324Now_loading...774KB:2009/02/24(火) 19:40:12 ID:qM18Fqoe
>>315
ありがとうございます。選択不可でテキストカーソルは回避できました。
しかしながら、オブジェクト上の文字列にマウスがさしかかると指マークから
通常の矢印マークになります。

欲を言って申し訳ないですが、指マークのままにするにはどうしたら良いでしょうか?
325Now_loading...774KB:2009/02/24(火) 20:12:11 ID:gOhhoi2Q
>>322
こんな感じ?
//ランダムで取り出す用
var targetRandomArray:Array = new Array;
function setRandomArray( arr:Array ):void {
targetRandomArray = arr;
}
function getRandomArray():String {
var i:int = targetRandomArray.length;
var r:int = (Math.random()*i ) >> 0;
var retString = targetRandomArray[ r ];
targetRandomArray.splice( r , 1 );
return retString;
}
326Now_loading...774KB:2009/02/24(火) 20:14:15 ID:dCjFW/JF
まうすもーどおんでいいのよ
さあおいでおにいちゃん
327Now_loading...774KB:2009/02/24(火) 23:21:56 ID:rLlko2TG
>>323
ありがとうございます、読み直したら297の方の辺りで似たような内容であったようですね、失礼しました・・・。

>>325
ありがとうございます、書いて頂いたソースはまだ上手く認識できていませんが
これから調べながら参考にさせて頂きます、ありがとうございました。
328Now_loading...774KB:2009/02/24(火) 23:38:44 ID:gOhhoi2Q
>>327
あ、忘れたよ
setRandomArray(array);
trace(getRandomArray());
trace(getRandomArray());
trace(getRandomArray());
trace(getRandomArray());

こう使うのよ
329Now_loading...774KB:2009/02/25(水) 03:19:02 ID:XxM0/nBg
環境:WinXP-ProでFlashCS3-ProのAS3.0です。

以前作ったFlash(メインのタイムラインフレームは1個のみ使用)にオープニング画面用
のフレームを前方に1個付けたところ、今まで正常に動いていたものがコンストラクタで
「TypeError: Error #1009: null のオブジェクト参照のプロパティまたは
メソッドにアクセスすることはできません。」
のエラーが出ます。
なお、ASはドキュメントクラスとしてステージにリンケージしています。

デバッグモードで調べたところ、ステージ上に置いているMC(dispM)の行が問題を起こし
ていることが分かりました。この行は、this.dispM.buttonMode=true; の書式でボタンモード
を指定している箇所です。しかし、この行は以前の段階では何も問題を生じていません。

こういう場合(前方にフレームを付けた場合)どうすべきでしょうか?
330Now_loading...774KB:2009/02/25(水) 07:38:52 ID:zIyOlrTF
>>325
>>328
酷すぎるだろコレ
全く参考にならないどころか絶対に参考にすべきじゃない
331Now_loading...774KB:2009/02/25(水) 08:14:40 ID:RKgMv12V
>>329
第一フレームにオープニング用のMCが、
第二フレームにdispMがあるわけですね?
だとすると、ドキュメントクラスのコンストラクトの段階ではまだdispMオブジェクトが作られていないはず。
第二フレームに移った瞬間にdispMが作成されるはずなので、その時に、buttonModeを指定するよう
にする必用があると思います。
332Now_loading...774KB:2009/02/25(水) 08:53:22 ID:uEzbm7B1
>>325
>>328
糞ソースさらしてんじゃねーよw
333Now_loading...774KB:2009/02/25(水) 10:16:11 ID:xpJXXZ1K
あるムービークリップの中身を任意に差し替えるという関数もしくは
クラスを作成しようとしています。(winxp+cs3+as2)

1) 外部から複数の画像(a.jpg, b.jpg, c.jpg)をloadmovieで配列に格納します
2) (1)で格納する際、画像処理を施します
3) 新規に空のMCを作成し、その中に(1)で読み込んだ任意の画像を表示する
4) 任意のタイミングで表示する画像を切り替える

漠然と上記のようなことをしたいのですが、実際にどう書いたら良いか
分かりません。(1)だけ考えても、loadmovieで読み込んだMCを配列に入れる際
ターゲットパスに表示されてしまいます。配列にだけ格納して「ライブラリ」のように
使いたいのですが、このような仕組みを実現するにはどうすれば良いでしょうか。
334Now_loading...774KB:2009/02/25(水) 10:29:10 ID:3p96aeSt
質問はもっとしぼって
実際に試してみたコードを記述
335Now_loading...774KB:2009/02/25(水) 10:38:10 ID:/UFvuhO5
>>330,332
なんでー?
>>325が大正解に見えるんだけど、他にやり方あるの?
AS1.0の潮気を抜いて静的関数にしろとか?
336Now_loading...774KB:2009/02/25(水) 11:13:07 ID:uEzbm7B1
>>335
>>330>>322の仕様を実現できてると思うのか?
337Now_loading...774KB:2009/02/25(水) 11:53:51 ID:yRTuCbLe
>>336
わからん。合ってる気がするけど。
どこが問題?
338Now_loading...774KB:2009/02/25(水) 14:04:51 ID:l96E+MRq
>>337
まず関数の意味を使う意味を覚えて来い・・・。
339Now_loading...774KB:2009/02/25(水) 15:18:24 ID:/UFvuhO5
あらら誤魔化しちゃった。
思い違いなら認めようよ。
340Now_loading...774KB:2009/02/25(水) 15:32:52 ID:X3f7AKO6
>>325>>328の問題点
・ローカル変数にアクセサを定義する意味不明さ
・ディープコピーのつもりなんだろうが、setRandomArray()でやってるのはシャローコピー
・寡聞にして右に0ビットシフトというテクニックは知らない
・getterで特に必要もないのに、spliceを使う行儀の悪さ
・getRandomArray()でStringを返すセンスの無さ
・シャローコピーとspliceのコンボにより、>>328の後、元の配列は完全に破壊される
341Now_loading...774KB:2009/02/25(水) 15:35:41 ID:uEzbm7B1
元配列破壊してどうすんだよw
342Now_loading...774KB:2009/02/25(水) 15:44:28 ID:4Ww0k/hT
>setRandomArray()でやってるのはシャローコピー

やっぱそうなのか。
AS3.0詳しくないから、もしかしたら3.0では挙動が変わったのかと思ってしまった。
343Now_loading...774KB:2009/02/25(水) 15:46:17 ID:3k2f2Esn
えっ?
344Now_loading...774KB:2009/02/25(水) 15:46:38 ID:xAHctdBy
>>331
そうです。dispMは第2フレに置いてあり、このフレで有効です。
ASファイルのコンストラクタの記述を丸ごと第2フレのフレームアクション欄に
移動したら上手くいきました。

有難うございます。
345Now_loading...774KB:2009/02/25(水) 15:52:32 ID:AWKL6A7W
それシャローコピーにも至ってないよ
参照まるごと他の変数に代入してるだけ
シャローコピーとかディープコピーとかは別の話
346Now_loading...774KB:2009/02/25(水) 17:15:19 ID:nO9qMjW5
「関数の意味を使う意味」を覚えないとダメらしいぜ
347Now_loading...774KB:2009/02/25(水) 22:09:22 ID:RKgMv12V
package //namespace
{
public class RandomIndexProvider
{
private var _remains:int;
private var _ar:Array = new Array();
public function RandomIndexProvider($size:int)
{
for (var i:int=0;i<$size;++i)
_ar.push(i);
_remains = $size;
}
public function getNextIndex():int
{
if (_remains==0) return -1;
var i:int = Math.random()*_remains;
var a0:int = _ar[i];
var a1:int = _ar[_remains-1];
_ar[_remains-1] = a0;
_ar[i] = a1;
--_remains;
return a0;
}
public function reset():void { _remains = _ar.length; }

}
}
重複なしのランダムなインデックス数列を取り出せるクラスを作ったほうが汎用性があるので、このように
つくってみた。
348Now_loading...774KB:2009/02/25(水) 22:10:58 ID:RKgMv12V
で、これがテストプログラム。
var n:int = 10;
var rip:RandomIndexProvider = new RandomIndexProvider(n);
var s:String ="";
var i:int;
for (var u:int=0;u<10;++u)
{
for (i=0;i<n;++i)
{
s+=String(rip.getNextIndex()); s+=" ";
}
trace(s);rip.reset();s="";
}
349Now_loading...774KB:2009/02/25(水) 22:17:22 ID:RKgMv12V
実行結果。まあ、よさそうな感じ。
4 0 5 3 6 7 8 9 1 2
0 5 8 2 3 6 1 4 7 9
3 8 9 7 0 5 6 4 2 1
9 8 0 1 3 5 7 4 2 6
1 4 5 7 8 0 2 6 9 3
8 7 0 2 9 4 1 5 3 6
6 4 7 3 1 5 2 8 9 0

言い忘れたが、これは>>322に対するレスね。
array[0] = "abc";
array[1] = "def";
array[2] = "ghi";
array[3] = "jkl";

var n:int = array.length;
var rip:RandomIndexProvider = new RandomIndexProvider(n);
for (var i:int=0;i<n;++i)
trace( array[rip.getNextIndex()] );
350Now_loading...774KB:2009/02/25(水) 23:00:55 ID:vRu4XfiR
AS2.0で検索機能を作ろうと思っているのですが、
テキスト入力で検索したい文字を打ち込んで、検索ボタンを押すと、
外部テキストから読み込んで、その打ち込んだ言葉がテキストエリアに出力されるようにしたいのですが、
どうすれば実現できますでしょうか?


[ a ] 検索ボタン
[ aia aaa axa ]

などといった感じです。
351Now_loading...774KB:2009/02/25(水) 23:13:00 ID:3p96aeSt
まずは作ってみて
わからない部分を質問
352Now_loading...774KB:2009/02/25(水) 23:48:01 ID:vRu4XfiR
>351
作ってみて、外部テキストの読み込みとボタンを押して
外部テキストの表示は出来るのですが、検索のやり方だけは分からないんです
353Now_loading...774KB:2009/02/25(水) 23:53:11 ID:4Ww0k/hT
>>352
検索の対象は何?
読み込んだ外部テキスト?
それとも検索語にマッチした名前のファイルを読み込むの?
そのへんももっと具体的に。
354Now_loading...774KB:2009/02/25(水) 23:58:42 ID:vRu4XfiR
>353
外部テキストです。
先に、外部テキストに何か文字を入れておいて
例(aa)
検索でaを検索とすると、aという言葉が入っている言葉を表示されるようにしたいです。

もちろん、aだけではなく、bを検索とすると、bが表示といった感じです。
355Now_loading...774KB:2009/02/26(木) 00:16:17 ID:DXCalcMc
1.外部テキストの各文字を配列に入れておく
2.配列内で検索条件に合う文字列の要素を取り出す

まずはここからやってみて
356Now_loading...774KB:2009/02/26(木) 00:18:44 ID:dGbh/vWY
>>347->>349
なんでこんな訳わからんモノ作っちゃうんだよ…

別に何の汎用性も無い使いにくいクラス設計するより
配列シャッフルする関数一つ実装した方が遥かにシンプルで汎用性あるんだよ
>>300でとっくに答えが出てるって早く気づいた方がいい
357Now_loading...774KB:2009/02/26(木) 01:03:44 ID:weJVzvL3
じゃあ簡単なシャッフルのスクリプトを書いてみよう!
358325:2009/02/26(木) 01:13:31 ID:emsJd76P
>>340
改良してみました。

var arr:Array = new Array("abc","def","ghi","jkl");
var randomArr:Array = getRandomArray(arr);
for each( var obj:Object in randomArr ){
trace(obj);
}

function getRandomArray( arr:Array ){
var retArr:Array = new Array();
var tempArr:Array = new Array();
//配列を入れなおす
for each( var obj:Object in arr ){
tempArr.push(obj);
}
//tempArr→retArr
var r:int
for (var i:int = 0; i < arr.length ; i++){
//右に0ビットシフトして整数をとりだす。(Math.floorより早いらしい。)
//ttp://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767
r = (Math.random()*tempArr.length ) >> 0;
retArr[ i ] = tempArr[ r ];
tempArr.splice( r , 1 );
}
return retArr;
}
359Now_loading...774KB:2009/02/26(木) 01:14:16 ID:hn/40+xY
>>356
>>300は配列の順序を変えたくない場合に対応できないでしょうが。
360Now_loading...774KB:2009/02/26(木) 01:24:18 ID:hn/40+xY
というよりは、まさにシャッフルするためのコードなんだが。
例えば、1000個の配列から重複なしで任意の個数を取り出したいときなどを考えればいい。
361Now_loading...774KB:2009/02/26(木) 01:25:24 ID:mwVVoQfQ
昔作ったポーカーゲーム用のシャッフルルーチン多分解りやすいと思う
これは1回しかシャッフルしてないけどたくさんしたければ、下の方のfor文を何回か行えばいい
package {
//0から指定数値-1までの値をシャッフルした配列を返す
public class Shaffle{
function Shaffle(){
}
public function makeShaffle(maxS:uint):Array{
var sar:Array = new Array(maxS);
var keep:uint=0;
var terg:uint=0;
for (var i:uint=0; i<maxS; i++) {
sar[i] = i;
}
for (i=0; i<sar.length; i++) {
keep = sar[i];
terg = Math.floor(Math.random() * sar.length);
sar[i]=sar[terg];
sar[terg] = keep;
}
return sar;
}
}
}
362Now_loading...774KB:2009/02/26(木) 01:29:14 ID:mwVVoQfQ
指定された値までのシャッフルされた配列が返るので、
それの頭から使えばいい
363Now_loading...774KB:2009/02/26(木) 01:48:37 ID:hn/40+xY
>>358
//右に0ビットシフトして整数をとりだす。(Math.floorより早いらしい。)
//ttp://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767
なるほど。何をしてるのかな、と思ったけどそういうことか。私も以前これを読んだが、参考になった。
たしか、
for (var i:int = 0; i < arr.length ; i++){

var n:int = arr.length;
for (var i:int = 0; i < n ; i++){
にした方が良いというTIPもあったね。
364Now_loading...774KB:2009/02/26(木) 01:57:54 ID:mwVVoQfQ
ソースを読んでいてアレ?って思うようなソースは書いてはいけない
最適化を行う前に解りやすいソースを書くことを心がけるべきだし、
変に早くなるとか誤解してコンパイラの最適化を阻害するようなことをしてはいけない
365Now_loading...774KB:2009/02/26(木) 02:08:30 ID:UxemkVQK
意地悪なのかバカなのかわからんなもうw

//シャッフルする関数
function shuffle(arr:Array):Array {
var cnt:int = arr.length;
while (cnt) {
var i:int = Math.random()*cnt;
var o:* = arr[--cnt];
arr[cnt] = arr[i];
arr[i] = o;
}
return arr;
}
//取り出す順用の配列を作る関数
function createOrder(arr:Array):Array{
var cnt:int = arr.length;
var order:Array = [];
for(var i:int=0;i<cnt;i++)order.push(i);
return order;
}

//元の配列
var arr:Array = ["A","B","C","D","E"];
//取り出す順を管理する配列作ってシャッフルしておく
var order:Array = shuffle(createOrder(arr));
//取り出す
for(var i:int=0;i<order.length;i++)trace(arr[order[i]]);
trace(arr,"@",order);
366Now_loading...774KB:2009/02/26(木) 02:12:31 ID:UxemkVQK
ajaxやってるとArray.prototypeに仕込んで使いたがる人も多いかな
「Array.prototype.shuffle」でぐぐればなんぼでもでてくるよ
367Now_loading...774KB:2009/02/26(木) 02:32:04 ID:13/8c0yC
>>358
そんな小手先の整数変換の最適化うんぬんの遥か以前に、
無駄に配列作ったり、コピーしたり(しかもシャローコピー)、spliceしたり
してる部分の方がよっぽどボトルネックになってるんだってば。
368Now_loading...774KB:2009/02/26(木) 02:36:09 ID:weJVzvL3
色々テストしたけど、シャッフル部分の速度はどれも大して変わらんな。
spliceは激遅だが。
intとかuint型でfloorとか右シフトって必要あんの?
369Now_loading...774KB:2009/02/26(木) 02:41:28 ID:hn/40+xY
>>365
おのおのコンセプトが違いますからね。悪いコードとはなから切り捨てず、ソースからそのコンセプトを読み取るのも大事。
たとえば、10000個の集合から10個程度の要素をランダムに取り出すことを考えた場合、
>>365のコードはいちいち10000個すべてシャッフルするので無駄が多すぎる、
という観点から書いたのが、>>347のコード。もちろん、すべてシャッフルする場合は>>365には劣るが
かといってそれほど非効率というわけでもく、リシャッフルの実行コストもほぼ皆無、という具合。
部分シャッフル、全シャッフルのどちらにも対応できるので汎用性はより高いだろう、
と判断したわけです。

>>368
半分はプログラマの自己満足かもね。
370Now_loading...774KB:2009/02/26(木) 02:48:47 ID:hn/40+xY
なんか質問者そっちのけ思わぬシャッフル祭りになってしまったな。
しまいにゃ、プログラム板行けよ、て言われそうだ。
371Now_loading...774KB:2009/02/26(木) 03:04:11 ID:p1Stiz2i
>>368
右シフトはCでプログラムやってる人は定石のように使う手だからなぁ。
最近はそこまでカチカチにチューニングすることも少なくなってきたけど。
372Now_loading...774KB:2009/02/26(木) 03:04:29 ID:13/8c0yC
>>369
そんなケースなら大抵、randomを10回呼ぶだけで済むでしょうがw

10000個から10個を絶対に重複を許さずにランダムに取り出すなんて特殊ケースは
全く別に考えるべき問題で、汎用的というよりはただの中途半端だと思うんだけど。
373Now_loading...774KB:2009/02/26(木) 03:14:52 ID:weJVzvL3
>>371
右シフト自体のことじゃなくて、
int型で「>>0」って何か意味あるの?
374Now_loading...774KB:2009/02/26(木) 03:35:22 ID:hn/40+xY
>>372
ひとつのクラスで両方カバーできた方が良い、というのが私の考え。
用途の応じて個別に作った方が良い、というのがあなたの考え。
どちらも否定はできないでしょ。

ただ、randomを10回呼べばいい、というのは何かの冗談か?



375Now_loading...774KB:2009/02/26(木) 03:53:59 ID:p1Stiz2i
>>373
すまん、よく見てなかったが >>358 のことなんだな。
int型の変数に渡す前に明示的に型キャストしてるんだろ。
376Now_loading...774KB:2009/02/26(木) 07:21:18 ID:P95fpA5A
ASで変数名のアタマに$をつけるのって始めて見たけど、そういうものなの?
377Now_loading...774KB:2009/02/26(木) 08:06:51 ID:kh9o7OSN
>>347のコードじゃあ100個のうち10個取り出そうと思ったら、0〜9の位置にあるものをランダムな順番で取り出すだけじゃん
378Now_loading...774KB:2009/02/26(木) 09:07:31 ID:mwVVoQfQ
>>376
いろんな言語やっててごちゃ混ぜにしてるんだろw
JavaやASでの推奨ではないよ
379Now_loading...774KB:2009/02/26(木) 11:32:36 ID:COvvI+bo
変数や関数名に$つけてもコンパイル通るのか知らんかったw
上の人の$はごちゃ混ぜじゃなくて独自のコーディング規約でしょ

Java+Eclipseあたりだと引数の変数名にはちゃんと色が付くけど
FlashやFlexのコード色付けは貧弱すぎて
一風変ったコーディング規約が生れても納得せざるをえない
380Now_loading...774KB:2009/02/26(木) 11:48:06 ID:QmOW4rIn
>>377
いや、ちゃんと0〜100の間の数字をランダムに10個取り出せるよ。
var rip:RandomIndexProvider = new RandomIndexProvider(100);
にして、rip.getNextIndex();を10回呼び出せばよい。

381Now_loading...774KB:2009/02/26(木) 12:35:37 ID:Vx58Gms7
>>302
遅くなったけどみてますよーー!
ありがとうございます。
382Now_loading...774KB:2009/02/26(木) 15:16:48 ID:df+SdqrA
>>374
それぞれの問題に適した解法・アルゴリズムを選択するってのは、プログラミングの基本じゃないの?
効率を求めてるんなら、それこそ個別に作るべきだし、
効率を求めないんなら、>>365のシンプルなアルゴリズムで十分で、こっちの方が汎用性も高いでしょ。

10000個から10個選ぶにしても、
重複無しが好ましい(最悪あってもよい)程度なら、random10回呼ぶだけで済むし、
それほどのばらつきが必要で無いんなら、0〜999、1000〜1999、…、9000〜9999から1つずつ選択するだけで
わざわざ要素10000の配列を作って保持するまでも無かったりする。

あと、上の状況では>>365のアルゴリズムは非効率的で無駄が多いみたいなこと言ってるけど、
どんな状況でも1つの解法で対処しようとするあなたの考えが招いた問題なだけで、
そういう状況の時、普通は>>365のアルゴリズムで解こうとは思わないから、何の問題にもならないと思うよ。
普通は問題にならないことが問題になるってことが、あなたの考え自体の問題点。
383Now_loading...774KB:2009/02/26(木) 15:30:32 ID:kHjPXAnY
どっちの考え方も正しいと思うよ。
>>322は利用状況まで書いてないし。
384Now_loading...774KB:2009/02/26(木) 15:46:01 ID:QmOW4rIn
>>382
たぶん、あなたはクラスライブラリなどを作ったことが無いのでしょう。
ひとつのコードを書いたら、使い捨てにせず、汎用性と拡張性を付与したライブラリとして
資産化する、というのは広く受け入れられている考えです。
すべて対処療法的に解決する、というのもひとつの考えで否定する気はありませんが、
すくなくとも一方を間違っていると切り捨てるのは閉鎖的な考え方でしょう。
385Now_loading...774KB:2009/02/26(木) 15:46:27 ID:RhXuMNWg
正規化と非正規化の話か
どっちがいいかは状況によるね
386Now_loading...774KB:2009/02/26(木) 15:52:26 ID:QmOW4rIn
まあ、そうだね。
387Now_loading...774KB:2009/02/26(木) 16:07:02 ID:kh9o7OSN
>>380
あーあー、100個キープして都度1個選んでるのか。なる
速度いらないカードゲームとかならそっちのが良さそうだね
2周目の手札とかも行けるわけだ
388Now_loading...774KB:2009/02/26(木) 17:10:15 ID:QmOW4rIn
>>382
そもそも>>322の依頼文を読んで、なぜ
A 配列の個数はそれほど多くなく
B 頻繁にリシャッフリングすることもなく、
C シャッフリングされた要素はすべて利用する
D 確率が低ければ重複も大目に見る
などと勝手な仮定をするんだ?詳しい利用状況は何も指定されてないんだ。
配列の個数が膨大で、頻繁にリシャッフリングする必要があり、シャッフリングがされた要素は数個しか利用せず、
重複はいかなる場合でも許さない、というユーザーの要求であれば、>>365は絶望的に効率が悪いものになる。

>>347のコードは
A 多くても少なくても同じように利用できる
B 頻繁でもそうでなくても良い。
C 一部でも全部でも良い。ただし一部の場合は特に効率的。
D 重複は絶対にない
というように、どのような利用状況においても効率的に無駄なく処理する解決策を提供しただけだが、
その何が気に食わない、というのか。
逆に伺いたいが、>>347のコードが>>365のコードにくらべて劣っている点は具体的に何だ?
配列と同個数のインデックス配列を作らなければいけない点は>>365も同じはずだ。
リシャッフリングするたびにインデックス配列を作らなければいけない>>365とは違い、
>>347は配列の作成は一回だけだ。




389Now_loading...774KB:2009/02/26(木) 17:19:37 ID:QmOW4rIn
・・Dについてはちょっと見当はずれか・・。>>365も重複はないわけだからね。
390Now_loading...774KB:2009/02/26(木) 19:10:04 ID:df+SdqrA
別にライブラリとかのアイデアを否定してるわけじゃなくてさ…
単純に中途半端な「配列のインデックスを重複無しに取得するクラス」が必要?ってだけの話。
>>322の依頼文なんて明確に詳しい利用状況を書いてるじゃないw
この依頼文を読んで、
>配列の個数が膨大で、頻繁にリシャッフリングする必要があり、シャッフリングがされた要素は数個しか利用せず、
> 重複はいかなる場合でも許さない
ようなことが必要になりうる要求と解釈する方が変じゃない?そちらの方こそよっぽど勝手な仮定をしてるでしょ。

まぁ、>>347が有用なクラスだと思って使う人がいるんならそれでいいだろうけどね。
インデックスを取得するメソッドで-1を返したり、メモリ効率の悪い、
用途が非常に限定された、少機能なクラスを、わざわざ使おうとは自分は思いませんけど。
391Now_loading...774KB:2009/02/26(木) 20:29:12 ID:qlzgseER
個人的には、RandomIndexProviderなんて、
いちいち中身読まなきゃ何するクラスか分からないオレオレクラスよりも、
シャッフルメソッドorシャッフル関数の方が名前だけで理解できて好きです。
392Now_loading...774KB:2009/02/26(木) 21:12:38 ID:p1Stiz2i
なんか面倒くさい人がいるなぁ。質問者が解答で得たものを
自分に合った形で使えばいいだけだろが。
393325:2009/02/27(金) 00:37:00 ID:GC2/NxSi
なにこのシャッフルスレwww
もしかして俺のせいで、お前らのプログラミング魂に火をつけた?ww
394Now_loading...774KB:2009/02/27(金) 01:03:13 ID:vBefTcM+
プアなかまってちゃんがうざいのでシャッフルの話はこの辺で終りにしましょう
395Now_loading...774KB:2009/02/27(金) 02:43:43 ID:B+n3PnZP
誰かが物凄い勢いで解答するスレで
拡張性とか正規化とかいらないだろ 仕事じゃねーんだからw
サクッとアルゴリズムがわかればいいだけ。
優劣つけるなら、処理速度とか、コードの短さとか
単純にわかるものでやってくれ。
396Now_loading...774KB:2009/02/27(金) 09:44:42 ID:c6p4fikg
きちんとしたソースを提示すべきだし、いろいろ議論していんじゃね
糞ソースさらすとみんなに叩かれて勉強になるしねw
397Now_loading...774KB:2009/02/27(金) 13:57:14 ID:+L1QMbRR
すみません、2個質問です。

var array:Array = new Array ( ) ;
for ( var loopa:Number=0; loopa<10000; loopa++ ) {
 array[loopa] = new Sprite ( ) ;
 array[loopa].addEventListener ( MouseEvent.MOUSE_DOWN, function ( event:MouseEvent ):void {
  ?
 } ) ;
} ;

無名関数の中での、自分自身(array[loopa])へのアクセスの方法。
無名関数の中で、自分に振られた添字(loopa)を知る方法。

Spriteに固有名を着ければいいんですが、数が多いので悩んでいます。
よろしくお願いします。
398Now_loading...774KB:2009/02/27(金) 14:34:41 ID:V0m6FjML
(a)無名関数の中での、自分自身(array[loopa])へのアクセスの方法。
(b)無名関数の中で、自分に振られた添字(loopa)を知る方法。

それぞれ無名関数内で以下の記述を行なえば上記(a),(b)になる
(a)array[loopa]
(b)loopa

399Now_loading...774KB:2009/02/27(金) 14:36:51 ID:V0m6FjML
あぁ、ごめん無理かも
400Now_loading...774KB:2009/02/27(金) 14:45:56 ID:vBefTcM+
自信へはtargetじゃまいか?あと、nameに添字を入れとく
http://livedocs.adobe.com/flex/3_jp/langref/flash/display/DisplayObject.html#name
401Now_loading...774KB:2009/02/27(金) 14:49:25 ID:V0m6FjML
(a)は event.target で拾えるかな
(b)は Spriteがdynamicクラスではないから、そのままでは無理かも
MovieClipなら
array[loopa] = new MovieClip( ) ;
array[loopa].num = loopa;
として
event.target.num
で取得できる。
402Now_loading...774KB:2009/02/27(金) 14:53:47 ID:AOTf+iwW
>>397
>自分自身(array[loopa])へのアクセスの方法
これはイベント処理みたいだからイベントオブジェクトのtargetでいけるよ
>自分に振られた添字
添字というか、ちょっとした値ならクロージャ使って保持しとけばいけるけど、そもそもSpriteの数が多いなら、イベントリスナに割り当てる関数は無名関数じゃないほうがいいんじゃないかなあ
100個のSpriteに100個の無名関数割り当てるより、100個に1個割り当てた方がやさしいでしょ

一応はこんなでいけるけど、ちょっと気持ち悪い。処理によってはイベントオブジェクトだけで何とかなるんじゃない?
それか保持したい情報持ったクラスを作っちゃった方がすっきりするかもね

var spriteList:Array=[];
for(var i:int = 0;i<10;i++)spriteList.push(addChild(createSprite(i)));

function createSprite(index:int):Sprite{
var sprite:Sprite = new Sprite();
//イベントオブジェクトとクロージャで保持しておいた値を利用
sprite.addEventListener(MouseEvent.CLICK,function(event:MouseEvent){
trace("このスプライト:"+event.target,"インデックス:"+index);
})
//ここから表示用の処理
sprite.graphics.beginFill(0xFF0000);
sprite.graphics.drawRect(0,0,20,10);
sprite.x = Math.random()*stage.stageWidth;
sprite.y = Math.random()*stage.stageHeight;
return sprite;
}
403Now_loading...774KB:2009/02/27(金) 14:55:28 ID:YGul1BUC
event.targetで自身へアクセスできるお
EventListener10000個w
404397:2009/02/27(金) 15:22:09 ID:KukOrLtv
うぉ、みなさん素早くて助かります。
理解しました、ありがとうございました。
405Now_loading...774KB:2009/02/27(金) 16:23:07 ID:Qkb7FJtd
もしそのspriteを全部同じ親にaddChildするつもりなら、イベントのバブリングを利用して、
sprite10000個にリスナを追加せずに、親に1個リスナ追加するだけで済むと思うよ。
状況によって大量のイベントリスナはかなり動作を重くする可能性あるし。

//spriteの親の表示オブジェクトparentに対してリスナ追加
parent.addEventListener(MouseEvent.CLICK,
function(e:MouseEvent):void { trace(e.target); }); //e.targetで個々のspriteを参照できる
406Now_loading...774KB:2009/02/28(土) 00:51:05 ID:/D5MLUBS
AS2.0 よろしくお願いします。

comboboxに

0|明日
1|俺は
2|チヌ

の値で、5秒毎に0→1→2と自動で選択させるにはどうしたら良いのでしょうか?
407Now_loading...774KB:2009/02/28(土) 01:40:34 ID:jG7LMsDX
>393
氏ねゆとりウザい
俺もウザい
仲間だな
408324:2009/02/28(土) 05:44:12 ID:ww3w27Kd
どなたかお願いします。
タイトルテキストを持つMCに対してマウスオーバーしてもマウスの
指マークをテキストの範囲でも維持したいです。
409Now_loading...774KB:2009/02/28(土) 16:28:33 ID:TRnYp4Yf
>>408
MCのmouseChildrenをfalseにしてイベントフロー切っちゃえばいいんじゃね?
410324:2009/02/28(土) 23:05:07 ID:71v/M6uu
>>409
さんきゅうです。
やってみます。
411324:2009/03/01(日) 01:14:03 ID:w8zM0vMX
(連投すいません)
>>409
container.mouseChildren = false; でマウスへの反応が改善しました。
感謝します!
412Now_loading...774KB:2009/03/01(日) 22:43:42 ID:L88mSqvD
AS3.0
numChildrenで返す値って0から?
表示オブジェクトがひとつなら0。2つなら1。で合ってる?

あと、表示オブジェクトのプロパティを変更したいんだけど、
var mc_obj:Object;
mc_obj="abc";
mc_obj.visible=true;
これでabcと言う名前を付けたインスタンスのプロパティを変更出来る?
abcの値はその都度変更して、様々なインスタンスを表示/非表示を
切り替えたいだけど…。
413Now_loading...774KB:2009/03/01(日) 22:49:50 ID:1tXrW9E3
> numChildrenで返す値って0から?

聞く前に試した方が早いのに・・・1からです。
414Now_loading...774KB:2009/03/01(日) 23:07:57 ID:L88mSqvD
さんきゅ。trace();が何故か出来ないので、質問させてもらいました。
415Now_loading...774KB:2009/03/02(月) 00:31:49 ID:mYZgW6XG
何故できないか調べない奴らは高卒に多い
学ぶ力が欠如しているからだ。この業界はこういうやつが腐らせる
416Now_loading...774KB:2009/03/02(月) 00:44:45 ID:jEVD9b0a
まったくだ。
中卒の>>415を見習えよ糞共
417412:2009/03/02(月) 13:09:04 ID:iPM9+m9a
空のフレームにtrace(abc);ってやっても変数abcは出力されない。
なんで?

>>415-416
ここで「調べてから」って発言は、荒しと同じだよ。
調べたって判んないから聞いてるんだし、「調べる=ここで聞く」
って感覚でも良いと思うんだけどね。
それを理解した上で、答えてくれる人が答えるスレでしょ?

答えられないんだろ?

更に言わせてもらえば、業界って何?
俺は遊びでフラッシュやってんだけど。
418Now_loading...774KB:2009/03/02(月) 13:44:02 ID:JxF/TWYx
>>417
ASスレだし、教えて君なら基本的スレ池
419Now_loading...774KB:2009/03/02(月) 14:07:28 ID:6/eG4faZ
>>417
質問者が調べているかどうか
回等側から見るとまるわかりだよ
ググれといわれるのは大抵質問内容が悪い

そして回答者は
調べてわかるものに関しては「ググれ」と言うのではなく
スルーするのが一番。荒れるから
ググれと言われ>>417のような反応もありふれたもの

>空のフレームにtrace(abc);ってやっても変数abcは出力されない。
その空のフレームが実行されていないか
出力ウインドウが開いていないか
abcが空文字状態、あるいはabcが存在しない
420Now_loading...774KB:2009/03/02(月) 14:24:33 ID:iPM9+m9a
ウィンドウが開いてなかった。サンクス。

>>418
質問の程度はどうあれ、ここはASの質問スレだろ?
お前が難解と思える質問意外しちゃいけないのか?
421Now_loading...774KB:2009/03/02(月) 14:28:04 ID:2iYqI41h
AS関係なかったね
422Now_loading...774KB:2009/03/02(月) 14:29:37 ID:iPM9+m9a
Flashの超基本的な質問はここでしろ! part39
492 名前:Now_loading...774KB :2009/03/02(月) 00:36:39 ID:mYZgW6XG
ググらない奴らは何なんだ?阿呆にしては最近多すぎるぞ

ActionScript 誰かが物凄い勢いで解答するスレ 22
415 :Now_loading...774KB:2009/03/02(月) 00:31:49 ID:mYZgW6XG
何故できないか調べない奴らは高卒に多い
学ぶ力が欠如しているからだ。この業界はこういうやつが腐らせる

どこで聞いたって一緒だろ?
423Now_loading...774KB:2009/03/02(月) 14:32:52 ID:iPM9+m9a
>421
結果論だろ?
424Now_loading...774KB:2009/03/02(月) 14:43:40 ID:JxF/TWYx
>>420
>ウィンドウが開いてなかった。サンクス。
せめて教本の1冊ぐらいやってから来てくれ
425Now_loading...774KB:2009/03/02(月) 15:27:22 ID:iPM9+m9a
俺が買った本には書いてなかったな。
というか、trace();って1からあるから、3.0の本には基本過ぎて書いてない。
俺自身、こういう簡単な事で躓く以外、出力で確認しようと思わないから
今まで使った事無かった。

答えない(答えるつもりが無い)奴はスルーしろよ。
このスレだってテンプレに「初歩的な質問でもなんでもおk」って書いてあるぞ。

上の残った質問、インスタンス名を変数で処理する仕方、誰か知らない?
nameは、予めステージに配置したので使えない。
426Now_loading...774KB:2009/03/02(月) 15:41:05 ID:JxF/TWYx
>>425
>上の残った質問、インスタンス名を変数で処理する仕方、誰か知らない?
みんな知ってるしw無能でタカビーな奴に答えたくねーだけだよw
427Now_loading...774KB:2009/03/02(月) 15:43:29 ID:JuwxlrbX
>>425
3.0なら
var str:String = "インスタンス名";
getChildByName(str)
でいけるんじゃないかな
428Now_loading...774KB:2009/03/02(月) 15:48:42 ID:iPM9+m9a
>>427
サンクス。

>>426
みんなって誰なんだよ。
知らない奴がいるから質問してんだろ?
429Now_loading...774KB:2009/03/02(月) 16:10:35 ID:9s69T6kt
写真を読み込んで、フェードインさせる仕組みがうまくいきません。
一枚目は読み込み終了後にアルファ0から100にとぅいーんしてくれるのに、
二枚目以降はとぅいーんしてくれないんです……………………………………………………

WHY?

以下ソースです。


var setPhoto=function(){;
var photoMedia:MovieClip = _root.container.mass.createEmptyMovieClip("photoMedia",_root.getNextHighestDepth());
var myListener:Object = new Object();
objMCLoader.addListener(myListener);
photoNum = Math.floor(Math.random()*10+1);
objMCLoader.loadClip("photo"+photoNum+".jpg",photoMedia);
// 読み込みを開始;
myListener.onLoadStart = function(target_mc) {;
photoMedia._alpha=0;
};
// 読み込み完了;
myListener.onLoadComplete = function(target_mc) {;
Tweener.addTween(photoMedia,{_alpha:100, time:3, transition:"line"});
objMCLoader.removeListener(myListener);
};
};

btn.onRlease = setPhoto;
430Now_loading...774KB:2009/03/02(月) 16:17:17 ID:2iYqI41h
>>423
こちとら、ASに問題が無いことは自明なんだよwww
431Now_loading...774KB:2009/03/02(月) 16:36:22 ID:iPM9+m9a
質問者の俺が主役なんだよ。質問した時点で何処に問題があるかなんて
判んないから、質問してんだよ。

>>427 追記
getChildByName()は、パラメータがname:Stringで、動的に追加しないと
機能しない、先のnameプロパティと同義だった。
でも助言は助かった。
432Now_loading...774KB:2009/03/02(月) 16:44:58 ID:9s69T6kt
あ、じこかいけつしちゃいました。

removeMovieClip(_root.container.mass.photoMedia);
を先頭に書けばOKでした。
433Now_loading...774KB:2009/03/02(月) 17:04:02 ID:UuQ5LIRt
FlashCs3のAS3で、シンプルボタンを作って、ボタンの中にMCを挿入した場合、
そのMCにアクションスクリプトからアクセスするにはどうしたらいいですか?
シンプルボタンには、通常インスタンスや変数を持つことができない
ようですが、FlashCs3を使うとMCを挿入できるので、何かアクセスできる
方法もないかと疑問に思っています。

434Now_loading...774KB:2009/03/02(月) 17:17:39 ID:Vq6lsNX5
>>431
ぶっちゃけ使ってる用語がムチャクチャすぎて
君が何をやりたいのが正確に理解できないから
みんなエスパー回答するしかないんだよ
435Now_loading...774KB:2009/03/02(月) 17:28:14 ID:JuwxlrbX
>>433
いちおう
simpleButton.downState
とかで「ダウン」の時の絵というかインスタンスというかにはアクセスできるよ
ただ、そこからいわゆるインスタンス名を使ってアクセスはできないかな
(simpleButton.downState as MovieClip).m.getChildAt(0)
みたいな感じではいけるけど、ちょっと使いにくい。
マウスイベント使って、ボタンと同じ位置に何か表示するとかのが簡単かもね
436Now_loading...774KB:2009/03/02(月) 17:29:25 ID:JuwxlrbX
あれ
>(simpleButton.downState as MovieClip).m.getChildAt(0)
じゃなくて
(simpleButton.downState as MovieClip).getChildAt(0)
437Now_loading...774KB:2009/03/02(月) 17:49:16 ID:iPM9+m9a
>>434
答えてくれた人はみんな判ってたよ。的を射た回答だった。
判んないからって拗ねるなよ。
438Now_loading...774KB:2009/03/02(月) 18:02:03 ID:Vq6lsNX5
じゃあレスを見る限りでは君の問題は全部解決してるようだね、ならいいけど
439Now_loading...774KB:2009/03/02(月) 18:18:36 ID:iPM9+m9a
うん。みんな、ありがとう。
440Now_loading...774KB:2009/03/02(月) 19:29:29 ID:I2anUlBC
>>439
公式ドキュメントのリンクを貼っておこう。
ttp://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/

ちょっとしたことなら大概これを見れば解決できるよ。健闘を祈る。
441Now_loading...774KB:2009/03/02(月) 20:55:44 ID:1rp63mcx
CS4はAS3に対応してますか?
それともまたASのバージョン上げましたか?
442Now_loading...774KB:2009/03/02(月) 21:00:47 ID:eTDN/PRq
>>441
当然対応しています。
ASは3が最新です。AS4とか出すなよ、絶対に出すなよ!>ADOBE
443Now_loading...774KB:2009/03/02(月) 21:31:02 ID:1rp63mcx
>>442ありがとうございます。
確かにオブジェクト指向だしこれ以上バージョン上げられては困りますよね
444Now_loading...774KB:2009/03/03(火) 00:09:55 ID:ShWlmopi
>>443
でも『完全な』オブジェクト指向ではないんだなあ。ではどの辺が
完全ではないのかは知らないけどw
445Now_loading...774KB:2009/03/03(火) 01:02:02 ID:nyjsFXc7
Cで出来たツールなら数秒で終わる処理が
AS1だと「実行速度が遅く」がでて実用度がゼロなんだけどどうにかしたい
AS3なら処理速度ってよくなるもの?forをスゴイ勢いで回さないと行けないんだけど
446Now_loading...774KB:2009/03/03(火) 01:06:01 ID:ALoLRN6e
AS1より100倍は速いがそれでもまだまだCよりは全然遅いレベル
447Now_loading...774KB:2009/03/03(火) 01:29:08 ID:nyjsFXc7
ありがとう、やっぱり早いんだね導入考えないとダね。つか必須なのか。
448Now_loading...774KB:2009/03/03(火) 02:09:44 ID:bEvQPJNX
質問させてください。
(1)MovieClip.loadMovie(); で読み込んだjpg画像のサイズを取得する方法はないでしょうか?
空のMovieClipに、jpg画像を読み込んで、そのMovieClipの_width、_heightを参照しましたがダメでした(width、_heightはゼロのまま)

(2)また、MovieClip.loadMovie()でjpg画像を読み込んで、これをjpg画像ごとBitMapDataにコピーする方法はないでしょうか?

BmpData.drawで
新規作成したBmpData.draw(jpgを読み込んだMovieClip,,theMatrix, theColTrans,"normal",BmpDataのrectangle);
という具合に書いてみたのですが,MovieClip.loadMovie()で読み込んだjpgがない状態のMovieClipしかコピーされないのです。

最終的な目的は、外部ファイイルのjpg画像を、BitMapDataとして扱うことです。

449Now_loading...774KB:2009/03/03(火) 02:10:38 ID:bEvQPJNX
追記。環境を書き忘れましたFlash8、AS2.0、WinXPです。
450Now_loading...774KB:2009/03/03(火) 02:16:54 ID:7oE7zHib
>>448
loadMovie()した直後は0になるよ
読み込み完了してから、_widthと_heightを参照してる?
2でやりたいこと自体は可能だけど、>>448の場合はどこかに間違いがあるんだろう
いま眠いんで、すまんが推測とかできないや
とりあえずMovieClipLoader使いなよ
451Now_loading...774KB:2009/03/03(火) 02:25:35 ID:bEvQPJNX
サイズを参照するのも、BitMapDataにコピーしたのもLoadMovie()直後でしたので、
おそらくご指摘の通りタイミングが合っていないせいだと思います。
MovieClipLoaderを組み込んでみます。

ありがとうございました。

452Now_loading...774KB:2009/03/03(火) 03:06:57 ID:a+phiaBT
AS2です。質問させて下さい。
外部XMLファイルをFlashに読み込み、パースしています。
配列「S_JrWord」にXMLの要素を格納して、ダイナミックテキスト(変数名S_00〜S_06)に読み込んでいます。

for( var i = 0; i<S_Jr.length; i++ ){
S_JrWord.push(S_Jr[i].firstChild.firstChild.nodeValue); //配列 S_JrWord にWordを格納する文
}

_root.S_00 = S_JrWord[0];
_root.S_01 = S_JrWord[1];
_root.S_02 = S_JrWord[2];
_root.S_03 = S_JrWord[3];
_root.S_04 = S_JrWord[4];
_root.S_05 = S_JrWord[5];
_root.S_06 = S_JrWord[6];


ここまでは成功しています。
そこで、読み込むべきXMLの要素が見つからなかった場合、
Flash上のダイナミックテキストが表示されないようにしたいのですが、どうすればいいでしょうか。
今は「undefind」と表示されますが、その表示すら消えるようにしたいんです。


以下のように試しに書いてみましたが、上手くいきません。

if(S_Jr[1] = undefined){
S_01._visible = false;
}

どうかよろしくお願いします。
453448.449,451:2009/03/03(火) 03:18:47 ID:bEvQPJNX
うーむ、ダメでした。

****************

this.createEmptyMovieClip("picGetMc", this.getNextHighestDepth());

my_mcl = new MovieClipLoader();

my_mcl.loadClip("pic.jpg",picGetMc);

mclListener = new Object();
mclListener.onLoadComplete = function(target_mc) {
trace(picGetMc._width);
trace(picGetMc._height);
}

my_mcl.addListener(mclListener);

やはり出力結果は0,0でした


454Now_loading...774KB:2009/03/03(火) 09:08:30 ID:WZCZf1DB
>>452
if(S_Jr[1] = undefined){

if(S_Jr[1] == undefined){
とか?
455Now_loading...774KB:2009/03/03(火) 09:10:52 ID:WZCZf1DB
>>453
onLoadComplete

onLoadInit
456Now_loading...774KB:2009/03/03(火) 18:29:04 ID:7TpLN4Vc
Flash作成初心者なのですが、
作ったflashがなぜ動かないのかまったくわかりません。
http://iroiro.zapto.org/cmn/jb2/data2/jb1527.zip
↑が制作物なのですが、ご教授お願いします。
大変恐縮なのですが、間違えているところを編集してうpしていただけると大変ありがたいです。
457Now_loading...774KB:2009/03/03(火) 18:35:55 ID:uka1KAN9
AS3+FlashDevelop
でオチゲー作ったのですがCS3を最近導入したので新たにまた作ろうと考えてます。


作ったasファイルはCS3でも上手く利用できるんですか?
458Now_loading...774KB:2009/03/03(火) 18:44:19 ID:WZCZf1DB
>>456
なんだそれ、編集してUpまでしろってか、ただ働きさせるにもほどがある。
代償としてエロ画像100枚Upしろ。

修正方法

(1) タイムラインのacrionscriptレイヤーに書かれている内容を[全選択]→[切り取り]
(2) メモ帳とかのテキストエディタを起動し、[貼り付け]する。そして、
flaやhtmlと同じフォルダにBrainfuck.asというファイル名で保存する。
(3) FLASHのメニューから、ファイル→パブリッシュ設定→Flashタグ→スクリプトの
ところの設定...ボタンをクリック
(4) ドキュメントクラスのところにBrainfuckと入力
※(3)と(4)は、FLASHの何もないトコをクリックしてからドキュメントのプロパティで
クラスのところに入力してもよい

以上。
459Now_loading...774KB:2009/03/03(火) 18:48:41 ID:g64t4VeG
>>457
もしembedとか使ってたらそこだけ修正すればおk
460>>448.449,451,453:2009/03/03(火) 20:55:14 ID:bEvQPJNX
>>455
ありがとうございます。目的通り動作しました。
サイズの取得もBitMapDataへのコピーもonLoadInit内で行ったら正常に動作しました。
461Now_loading...774KB:2009/03/03(火) 21:10:01 ID:IMY//xCI
WinXP-ProでFlashCS3-ProのAS3.0を使っています。
MCマウスを重ねてそのMC内のフレームを移動した後、MOUSE_OUTしても
フレームが元に戻らない場合があり質問です。

MC(mc1, mc2, ・・・mc10 )があり、それぞれがマウスへの反応として、

[フレーム1] ←重ねるor外れる→ [フレーム2] →クリック→ [フレーム3]
   ○        ← →        ●        →      ◎   (MCの変化)

をするようにしています。下はマウスを重ねたとき外れたときのASです。
[フレーム1]
this.buttonMode=true;
this.addEventListener (MouseEvent.MOUSE_OVER, this_onOver);
function this_onOver (mouseEvt:MouseEvent) {
this.gotoAndPlay (2);
}

[フレーム2]
this.addEventListener (MouseEvent.MOUSE_OUT, this_onOut);
function this_onOut (mouseEvt:MouseEvent) {
this.gotoAndPlay(1);
}

※それぞれのフレームには this.stop (); を入れています。

上の記述だと各MCは凡そ期待通りの変化をしますが、時々マウスが外れてもフレーム2
のままになる場合があります。一応、再度マウスを重ねるとフレーム1に戻りますが操作上
都合が悪いです。

考えられる原因は何でしょうか? 
「AS3 MOUSE_OUT フレーム」などで検索しましたが分かりませんでした。
462Now_loading...774KB:2009/03/04(水) 02:24:01 ID:KLvpxgVZ
これはよくあること。
できれば他の方法でやるべきだと思う。
>>461のやり方はあんまり推奨できない。
あとできればgotoAndPlay(label1)
したほうがいいと思います。
463Now_loading...774KB:2009/03/04(水) 02:27:53 ID:Ss/ZauCb
WinXPでCS3のAS3.0です。

rootのフレーム2と3にMCを置いていますが、フレームを移動すると、フレーム3に
存在するMC(A_Key)がNullになり扱うことが出来ません。検証のため、traceで

trace(getChildByName("A_Key")+", "+MovieClip(root).getChildByName("A_Key"));

とすると、null, null が出力されます。MCのA_Keyは確かにフレーム3に有るのですが・・・
どうしてでしょうか?
464Now_loading...774KB:2009/03/04(水) 02:30:51 ID:ppTCYr8y
未来のコンテンツを参照しようとしても無理だべ
465Now_loading...774KB:2009/03/04(水) 02:40:45 ID:RScZQayh
>>464
早速すいません。
このtraceはフレーム3に書いているのですが、それでもNullになります。
466Now_loading...774KB:2009/03/04(水) 07:45:52 ID:ppTCYr8y
クラス名とインスタンス名が同じとか
467Now_loading...774KB:2009/03/04(水) 10:59:29 ID:mbdzVoxP
XPSP3上でCS3(AC3)を使ってるのですが。
CGIから変数を取得してダイナミックテキストに文字を入れ、
それの行数と文字数を取得したかったのですが。
traceすると、行数を取得するはずのnumLinesの結果は1、
文字長を取得するはずのlengthの結果は0になります。
ダイナミックテキストを上書きした値は取得できないのでしょうか?
(デフォルト値は空なので、その値を取ってきてる?)
そもそも、こういった使い方は出来ないのでしょうか?
どなたかご教授下さい。よろしくお願いします。

//フレーム・アクション
 var loader:URLLoader = new URLLoader();
 loader.dataFormat = URLLoaderDataFormat.VARIABLES;
 loader.addEventListener(Event.COMPLETE, completeHandler);
 loader.load(new URLRequest("http://www.hoge.jp/cgi/hoge.cgi"));

 trace('タイトル0(行数) :' + title0.numLines);
 trace('タイトル0(文字長) :' + title0.length);

 function completeHandler(event:Event):void{
   var vars:URLVariables = event.target.data;
   title0.text = vars.title0;
 }

▼trace結果
タイトル0(行数) :1
タイトル0(文字長) :0

▼CGIが吐くデータ
title0=あいうえおかきくけこさしすせそ&title1=たちつてとなにぬねの ……

468Now_loading...774KB:2009/03/04(水) 11:15:29 ID:ppTCYr8y
>>467
なんでcompleteメソッドでtraceしないの?
469Now_loading...774KB:2009/03/04(水) 11:32:15 ID:mbdzVoxP
申し訳ない。ちょっとよくわからない。
ヘルプでcompleteを検索して、なんとなく下記のように書き換えると、

 trace('タイトル0(行数) :' + title0.numLines);
 trace('タイトル0(文字長) :' + title0.length);
 trace('コンプリートした?:' + Event.COMPLETE);

▼trace結果
タイトル0(行数) :1
タイトル0(文字長) :0
コンプリートした?:complete

にはなった。
470Now_loading...774KB:2009/03/04(水) 11:34:44 ID:ppTCYr8y
何でcompleteHandler内でtraceしないのかと
読み込み完了した時点で確定するんじゃねーの
471Now_loading...774KB:2009/03/04(水) 11:49:00 ID:mbdzVoxP
やってみた。complete と返ってくる。

▼trace結果
タイトル0(行数) :1
タイトル0(文字長) :0
コンプリートした?:complete
コンプリートした?(completeHandler):complete
472Now_loading...774KB:2009/03/04(水) 12:02:34 ID:ppTCYr8y
>>471
IOエラーハンドラ作ってみ
473Now_loading...774KB:2009/03/04(水) 12:33:45 ID:mbdzVoxP
>>472
私にはもうわかんない。

ちなみに、CGIから取得した文字列は、ステージに表示はされているんですよ。
ダイナミックテキストにハードコードした場合にはlengthもnumLinesもOKなんですが、
ダイナミックテキストをスクリプトから書き換えると、見かけ上のテキストは書き換わってもlengthやnumLinesの
値は、ハードコードのものを引っ張ってくるようなんですわ。

見出しが2行になった時に、次の記事を1行分下げるっていう処理をしたかったんですが。
改行数を動的に取得できないのであれば、ダイナミックテキストをステージ一杯に拡げて、
XHTMLのリストタグを垂れ流したほうが速いかな……。

別の方法を探ってみます。
ありがとうございました。
474Now_loading...774KB:2009/03/04(水) 13:06:04 ID:7cABcijB
それ全然やってみてないんじゃねーのw
こういうことでしょ
completeイベントに関連付けた関数の中で処理しないと意味がない
 
function completeHandler(event:Event):void{
   var vars:URLVariables = event.target.data;
   title0.text = vars.title0;
   trace('タイトル0(行数) :' + title0.numLines);
   trace('タイトル0(文字長) :' + title0.length);
   trace('コンプリートした?:' + Event.COMPLETE); //これ定数だからいつでも「complete」確認に使えない
}
475Now_loading...774KB:2009/03/04(水) 18:26:02 ID:zleDjtcm
>>456
ありがとうございました。できました。
エロ画像は持ち合わせていないのでうpできませんが
Brainfuckを使ってみたいときに
http://www.geocities.jp/noritoshi_motzk/bfi.swf
をお使いください。
476Now_loading...774KB:2009/03/04(水) 19:20:31 ID:Ar1DsBPL
すいません。FlashPlayerが閉ループに入って作業が進みません。
CS3(AS3.0)をWinXPで使っています。

Stage上にMC(stepsBord)を置いて、この中に子として7個のMC(stepBtn1〜stepBtn7)
をボタンを押してfor文とaddChildAtで縦に配置しようとしています。
その際、for (var id=0; id < 7; id++) のある途中の条件の場合(idが2とか5)でstepBtn
内のフレームをgotoAndStopで変えてstepBtnのフレーム3版(1.5倍ほどY方向に長い)
を配置します。

この場合、プレビューでstepBtnのフレーム2版だとOKなのですが、フレーム3版だと
FlashPlayerが閉ループに入って(凍って)しまします。考えられる原因は何でしょうか?
下はfor部分の抜粋です。
for (var id=0; id < 7; id++) {
var tmpMC:MovieClip=new tmpClass as MovieClip;
if ((id+1)==1) {//試しにidが0の時
tmpMC.gotoAndStop (3);//ここがgotoAndStop (2)ならOK
}
tmpMC.name="stepBtn" + (id+1);
tmpMC.y=(id+1)*30
this.addChildAt (tmpMC, id+1);//0層には既に別のオブジェクトがあるので1から
}

なお閉ループに入った場合は、エラーメッセージは何も出ません。
477Now_loading...774KB:2009/03/04(水) 19:51:13 ID:mt+PTzTP
>>457の者ですが、オチゲーなどのゲームをCS3を用いて作る利点とかありますかね?
478Now_loading...774KB:2009/03/04(水) 22:20:03 ID:YXcFQhXO
以下のサイトでクリック募金というのをやっていますが、
一度クリックすると、その後クリックできなくなります。
クッキーでユーザを特定しているのかと思い、
クッキーを削除しても無駄でした。
クリックしたユーザをどうやって特定しているのでしょうか?

http://www.nittsu.co.jp/corporate/contribution/1click.html
479Now_loading...774KB:2009/03/05(木) 02:00:26 ID:e9sE6ZtH
>>478
shared objectじゃね?
480Now_loading...774KB:2009/03/05(木) 03:43:01 ID:No73TC70
通報しますた
481Now_loading...774KB:2009/03/05(木) 16:48:58 ID:cxb5gwV0
TextFieldで文字を表示させているんですけど、どうも読みにくいです。

アンチエイリアスはアドバンスにしてあって、文字サイズは11-13ぐらい。
色を真っ黒にし指定しても灰色になっちゃいます。
PDFは綺麗なのにActionScriptは・・・

何か良いTextFieldでの設定か、別の方法があったら教えて下さいませ。
482Now_loading...774KB:2009/03/05(木) 16:53:16 ID:8Owvk5yM
>>481
fontが細すぎてアンチエイリアスかけるとボヤけるってこと?
483481:2009/03/05(木) 17:24:21 ID:cxb5gwV0
>>482さん
ヒラギノ明朝のW3使っています。
細くなるし、ボケボケです・・・

これの対策ってあるんでしょうか?
484Now_loading...774KB:2009/03/05(木) 17:31:36 ID:/QjZkRMK
埋め込まないと駄目だよ
クソ重いムービーになるけど
485481:2009/03/05(木) 17:40:17 ID:cxb5gwV0
>>484
埋め込みはしてあります。
ローカル用なんで重さの問題はあんまり無いんです。

文字が痩せるのも気になりますが、一番解決したいのは、色が黒なのに灰色になってしまい事です。
こればっかりはどうにもならないのでしょうか・・・
486Now_loading...774KB:2009/03/05(木) 17:50:32 ID:/QjZkRMK
TextRendererクラスあたりを使って調整してみたらどう?
希望の結果がどういう物か分からないので、自分で調整してみてちょうだい
487Now_loading...774KB:2009/03/05(木) 18:19:08 ID:8Owvk5yM
>>485
12ptだと明朝の横棒が細すぎるからしょうがないっちゃしょうがない気がする。
y座標の値を0.1px単位で動かしてみると少し見え方が変わる。
あとはカスタムアンチエイリアスで調整するとか、FONTの太さを変えるとか。
488Now_loading...774KB:2009/03/05(木) 22:43:20 ID:hJ6IeOm4
ActionScript3.0で質問です。
マウスが画面外に出ている場合でもマウスの座標を取得する方法ってあるんでしょうか?
画面外だとMOUSE_MOVEが来ないし、MOUSE_OUTとかもダメのようです。
stage.mouseXも更新されないですし。
よろしくお願いします。
489478:2009/03/05(木) 23:26:39 ID:rnZYCU1q
>>479
そういうものがあったんですね。
ありがとうございました。
490Now_loading...774KB:2009/03/06(金) 01:36:45 ID:9YqQersX
df
491Now_loading...774KB:2009/03/06(金) 01:42:15 ID:Gdh4Vp8+
as3です。
シューティングゲームを作りたいのですが、
当たり判定を取るのに最も高速な方法は何でしょうか?
492Now_loading...774KB:2009/03/06(金) 02:04:05 ID:WbEdREUG
>>488
ないあきらめろ
>>491
private function onEnterFrame(event:Event):void
{
var dx:Number = ball2.x - ball1.x;
var dy:Number = ball2.y - ball1.y;
var dist:Number = Math.sqrt(dx * dx + dy * dy);

if(dist < 80)
{
trace("ヒット");
}
}
}
}
493Now_loading...774KB:2009/03/06(金) 02:04:27 ID:/o0a9Tgf
あービットマプははえーぞー
494Now_loading...774KB:2009/03/06(金) 02:18:36 ID:BTocpkss
初歩的ですがオブジェクト(2つの絵)同士の衝突を判定するにはどうすれば良いですか?
495Now_loading...774KB:2009/03/06(金) 04:52:59 ID:iBVwsHHY
すいません、>>476をお願いします。
エラーメッセージさえ出れば何とか手の打ち様があるのですが、
毎回凍ってCS3を再起動しています。
496Now_loading...774KB:2009/03/06(金) 15:24:46 ID:jxCjIS35
>>495
flashのプレビューならデフォルトで15秒で処理が止まってエラーが出る。
497Now_loading...774KB:2009/03/06(金) 15:30:45 ID:pUdFCgnk
グーグルマッポの最新版を使いこなしまくりたいので
CS4(CS3)からFlexに移行しようかと思ってますが
注意点とかありますでしょうか
498476, 495:2009/03/06(金) 15:49:20 ID:BYvI6jLm
>>496
476のfor文は別MCを押して実行させるのですが、15秒ルールの前に
tmpMC.gotoAndStop (3); で一瞬にして固まります。
499Now_loading...774KB:2009/03/06(金) 15:55:48 ID:qXEOo620
インスタンス生成が間に合ってないんでしょ
タイムライン持つMovieClipにはよくあること
いわゆるdoLater的な関数作って1フレーム待って実行するのが確実なんじゃないの
500Now_loading...774KB:2009/03/06(金) 16:03:13 ID:qXEOo620
それよりもボタンの外観変えたいだけなら、ボタン用のクラスに表示する絵をスクリプトで指定した方がスマートなんじゃないかな
3パターンあるなら、3つクラス作っても構わない
生成と同時にgotoAndStopしようとするのがちょっと無理がある
501Now_loading...774KB:2009/03/06(金) 18:17:17 ID:4mmmQAEY
質問させてください

MCを作成してフレーム1にテキストフィールドを配置したあとに、フレーム2、フレーム3とコピーしました。
この状態でステージにこのMCを配置して、テキストフィールドに値を設定しました。
その後gotoAndPlay()を使いMCのタイムラインを動かすとテキストフィールドの値が消えてしまいました。
どうやら各フレームのテキストフィールドは別々の変数として存在しているようなのですが、これを外部もしくは同じMC内の違うフレームからアクセスすることはできないでしょうか。

フレームを動かした後にmc.textField.text="";と実行すると、「null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」という警告がでます。

環境はFlashCS3 AS3.0です
502481:2009/03/06(金) 19:05:14 ID:y3nZzr7v
>>486,487
有り難うございます。

アドバンスでthicknessとsharpnessを調整してみました。
結果、玉砕。

文字サイズが小さすぎますね。
サブピクセルレンダを手動で設定出来ない事には、日本語は無茶でした。
文字サイズ大きくして出直してきます。
503Now_loading...774KB:2009/03/06(金) 19:07:10 ID:dqBQENay
>>492-493 ありがとうございます

すみません、ビットマップを当たり判定に用いるには
どのようにしたらよいかご教授いただけませんでしょうか?
504492だよ。:2009/03/06(金) 19:29:31 ID:WbEdREUG
>>501
できない。無理だ
>>503
hittestpointだな。
簡単なのは。でもこれは....
492は理解できなかった?
できなかったらもっと詳細にソースを書くよ

505Now_loading...774KB:2009/03/06(金) 20:04:48 ID:dqBQENay
>>504
ご親切にありがとうございます。
492で書いていただいたコードは理解できます。
当たり判定は、オブジェクトをhitTestしたり
492のように座標で判定したりといった方法があると思いますが、
ビットマップで判定というのははじめて聞きました。
ぜひともご教授いただけませんでしょうか?
506488:2009/03/06(金) 20:05:52 ID:360ZQLfo
>>492さん
ありがとうございます、残念ですが諦めます。
507Now_loading...774KB:2009/03/06(金) 20:22:49 ID:FtgBdJqz
質問です
FlashCS4で新しくでたVectorクラスをFlashCS3で使いたいのですが、
何か方法をご存じの方いらっしゃいませんか?

Vectorクラスのためだけに何万円も払うのはさすがにあれなんで...
508Now_loading...774KB:2009/03/06(金) 21:59:48 ID:suTIVkvA
>>502
文字列が固定でスクリプトから変える必要がないのなら、
ちょいと面倒だけどその文字を画像として書き出して
それを表示するのでもいいかもね
509Now_loading...774KB:2009/03/06(金) 22:25:54 ID:BTocpkss
CS3でインスタンス名とシンボルに変換するときの名前はどんな違いがあるんですか?AS3と関連付けて教えて下さい。
かなり初心者です。
510Now_loading...774KB:2009/03/06(金) 22:45:44 ID:WbEdREUG
>>507
ない
>>
初心者板にいけ
511Now_loading...774KB:2009/03/07(土) 01:02:37 ID:3U/b6iu7
>>509
インスタンス名がプログラムでいろいろ操作したりするときに使う。
シンボルに変換するときの名前はライブラリ(Ctrl+Lキーででてくる画面)で管理しやすいように作る名前。
だから後者はAS3とは無関係
512Now_loading...774KB:2009/03/07(土) 01:42:27 ID:5LsLJ2iA
大量のシンボルを、シンボル名からの変換でクラスに一気に名付けすることもある。
513476, 495:2009/03/07(土) 05:06:53 ID:dFEFTMP0
>>499-500
なるほど。生成タイミングの問題の可能性ありですか。
工夫してみます。
514Now_loading...774KB:2009/03/07(土) 08:05:49 ID:DRMYDxek
ブラウザのサイズが変わって、Flashの大きさも変化しちゃったときに
Flash内にある特定のMCの縦、横のピクセルを保持したまま
サイズを変化させたくないのですが、どうすればよいですか?

個人的にはstage.stageWidthから、Flashの現在のサイズを取得して
そこから、大きさを変化させたくないMCのサイズをどの程度変更させれば
見た目の大きさが変わらないか計算するという方法を考えたのですが
もっと効率のいいやり方はありますか??
515Now_loading...774KB:2009/03/07(土) 19:18:06 ID:ieZImuV0
ところでみんな使ってるMCって何ですか?
516Now_loading...774KB:2009/03/07(土) 22:32:48 ID:5LsLJ2iA
MCコミヤ
517Now_loading...774KB:2009/03/07(土) 23:56:28 ID:eZbmhamA
中卒氏ね
考えろ
お前の意見を言え阿呆
518Now_loading...774KB:2009/03/08(日) 04:15:20 ID:Py+NkSe+
おまえをムービークリップにしてやろうか
519Now_loading...774KB:2009/03/08(日) 10:12:12 ID:IqHcOP9I
じゃあ、お父さんはスプライト飲んじゃうぞw
520Now_loading...774KB[:2009/03/08(日) 16:32:00 ID:f2I48/On
じゃあボクは苺シェイプ
521Now_loading...774KB:2009/03/08(日) 16:34:06 ID:ptTiMv1h
では私はミリンダで。

と言いつつ、AS3.0,WinXP-Pro,FlashCS3です。
Stage上のMC(frameEndB)にマウスポインタが重なったら、その領域の中でだけ
マウスポインタが別のMC(txtMouseM)に置き換わるASを書いていますが、領域に
入って以降、txtMouseMと通常のマウスポインタ矢印が交互に(フレームレートの
間隔で?)点滅するように現れてしまいます。

txtMouseM.visible=false;//最初はMCを隠す
addEventListener (Event.ENTER_FRAME, onFrame);
function onFrame (frameEvt:Event) {
txtMouseM.x=stage.mouseX;
txtMouseM.y=stage.mouseY;
}
frameEndB.addEventListener (MouseEvent.MOUSE_OVER, txtMOUSE_rollOver, false, 0, true);
function txtMOUSE_rollOver (mouseEvt:MouseEvent) {//領域内で置き換える
Mouse.hide ();
txtMouseM.visible=true;
}
frameEndB.addEventListener (MouseEvent.MOUSE_OUT, txtMOUSE_rollOut, false, 0, true);
function txtMOUSE_rollOut (mouseEvt:MouseEvent) {//マウスポインタを元に戻す
Mouse.show ();
txtMouseM.visible=false;
}

どう手直しすべきでしょうか?
522Now_loading...774KB:2009/03/08(日) 18:09:48 ID:f2I48/On
>>521

>MouseEvent オブジェクトのupdateAfterEvent() メソッドを呼び出すと画面の描画を更新する事ができます。
>これで少ないフレームレートでも滑らかにマウスカーソルが表示されます。
http://hakuhin.hp.infoseek.co.jp/main/as3/mouse.html

まあこれが原因かどうかわからんけど。
とりあえず、上のサイトは役に立ちすぎる
523Now_loading...774KB:2009/03/08(日) 19:41:08 ID:xhIDKCgc
>>522
いいよね。
このサイト。
お気に入りに入れております
524Now_loading...774KB:2009/03/08(日) 20:46:21 ID:OY1MrocS
>>521
ちゃんと調べてないけどEvent.ENTER_FRAMEだから?
MOUSE_MOVEよりENTER_FRAMEのが処理が軽いんだけど、タイミングが微妙に違う。
525521:2009/03/08(日) 22:45:53 ID:AdyoNKkF
>>522-524
有難うございます。
Event.ENTER_FRAMEを使うとどうも動作がおかしくなる(領域内で
マウスポインタが止まったり)ので、紹介サイトの通り、MouseEvent.MOUSE_MOVE
とupdateAfterEvent();を使い目的の動作が出来ました。
ちなみに、30fpsです。
526Now_loading...774KB:2009/03/09(月) 12:46:43 ID:2Mikobco
flash cs3持っていますが、cs4ってなんであんなに高いんですか?
3000円ぐらいでcs4にする方法はありませんか?
527Now_loading...774KB:2009/03/09(月) 13:01:31 ID:Hn9Aj8C7
>>526
Adobeに聞いてください
スレタイと>>1を読んでから書き込みましょう
528Now_loading...774KB:2009/03/09(月) 14:57:05 ID:dmgRxWit
AS3.0 flashCS4(体験版)

AS1.0では、MCをattachMovie()で作った後、MCの変数を外から定義していました。
それをAS3.0で書くとどうなるのでしょうか。
つまり、
var MC = attachMovie("mc", "mc0", 0);
MC.hensu = 1;
MC.onEnterFrame = function(){
this.hensu++;
};
というAS1.0のコードをAS3.0に直すとどうなるのか教えてほしいです。
529Now_loading...774KB:2009/03/09(月) 16:52:36 ID:tiTTWWwk
WinXP flashCS3 AS2.0です。

最近よくみかけるフラッシュで
フルスクリーンモードと通常モードを切り替えるものがありますが、
あれってどうやってるんですか?

たとえばこのサイト↓

ttp://www.ceranco.com/

右下のボタンを押すとフルスクリーンになって
「フルスクリーンモードを終了するにはESCキーを押します」って
メッセージがでるようなものです。

スクリプトの書き方を教えてください。
わかりやすい解説しているサイトでもいいです。
530Now_loading...774KB:2009/03/09(月) 18:20:59 ID:FsxKB/KJ
fscommand(fullscrean,trru);
自動でescの案内は出る仕様。

あの〜trace();が出来ないんですけど、どうやるんですか?
531Now_loading...774KB:2009/03/09(月) 19:53:07 ID:YWFS4pvZ
>>529
http://hakuhin.hp.infoseek.co.jp/main/as3/stage.html
のフルスクリーン参照

Flashでやりたいことの90%くらいは上のサイトにあるから、
とりあえず一通りプログラムはみなくていいから実行結果だけでもザッと見ることをおすすめする。
こんなことができるんだ、くらいはおさえておいて損はない。
で、必要に応じてプログラムみればいい。
532Now_loading...774KB:2009/03/10(火) 00:05:33 ID:tiTTWWwk
>>531
出来ればActionScript2.0だと嬉しいのですが・・・。
でもいろいろ勉強になりそうなサイトなのでありがとうございます。

一応自分なりに調べてみて
flash側に

btn.onRelease = function() {
Stage["displayState"] = "fullScreen";
};

html側に
<param name="allowFullScreen" value="true" />

で、フルスクリーンにするところまでは出来たんですが、
フルスクリーン状態の時に同じbtnを押して通常モードに戻ることができません。
ひとつのボタンで切り替えができるようにするにはどうすればいいのでしょう?
533Now_loading...774KB:2009/03/10(火) 00:51:41 ID:V5sM4vsd
>>532
おっとAS2か。見落としてた。
onClipEvent(load){
var flag = 1
}
on (release) {
if(flag == 1){
Stage.displayState = "fullScreen";
flag = 0
}else{
Stage.displayState = "normal";
flag = 1
}
}
試してないけど。onClipEventとかなつかしいな。
534Now_loading...774KB:2009/03/10(火) 08:35:20 ID:JhWePsro
>>533
どうもありがとうございます。
ばっちり出来ました!!
535Now_loading...774KB:2009/03/10(火) 09:21:46 ID:iSuso1Wo
関数の引数の数が動的であるので、任意の引数番を確認するにはどうすればいいでしょうか?
お願いします。
536Now_loading...774KB:2009/03/10(火) 12:15:42 ID:2ZScNwIR
>>535
actionscript 可変引数
でググれ。
おっと、AS2とAS3では書き方が違うから注意な。
537Now_loading...774KB:2009/03/10(火) 15:55:43 ID:pZ2Bi7jJ
as2.0です。
MovieClipLoaderで画像をロードした後に縦横のサイズを取得しようとすると0が帰ってきます。
ロードした画像のサイズを知るにはどうしたらいいんでしょうか?
538Now_loading...774KB:2009/03/10(火) 16:03:17 ID:pZ2Bi7jJ
mcLoader.onLoadComplete = function(target_mc:MovieClip):Void {

trace( target_mc._width);
trace( target_mc._height);
};
ロード時の処理はこんな感じです。
539Now_loading...774KB:2009/03/10(火) 16:12:28 ID:2ZScNwIR
>>538

>>455
540Now_loading...774KB:2009/03/10(火) 16:59:39 ID:pZ2Bi7jJ
OMG

どうも><
541Now_loading...774KB:2009/03/10(火) 19:23:21 ID:SSwPPt18
AS3で、テキストフォーマットを適応したテキストフィールドに
ENTER_FRAMEで指定した関数で値を代入しているのですが、値を代入した瞬間からテキストフォーマットの効果が消えてしまうので

function enterFrameFn():void {
textField.text = num.toString();
textField.setTextFormat( textFormat );
}

値を入れるのと一緒にテキストフォーマットをセットしてという方法をしてますが、flashが極端に重たくなったような気がします
この処理方法で他にもっと良い処理の仕方はありますでしょうか?
542Now_loading...774KB:2009/03/10(火) 19:59:02 ID:1Ro6zUlw
>>541
書式変えなくていいならdefaultTextFormatプロパティを使うと行けるんじゃないかな
543Now_loading...774KB:2009/03/10(火) 20:53:22 ID:iSuso1Wo
>>536
どうもありがとうございました^^
544Now_loading...774KB:2009/03/10(火) 23:22:16 ID:VniWlW6G
ttp://www.nicovideo.jp/watch/sm5740053
これってFLASHの作品みたいなのですが
こういう乳揺れってASでどうやれば表現できますか?
545541:2009/03/10(火) 23:56:58 ID:SSwPPt18
>>542
返信ありがとうございました
enterFrameFn()の移行前に
textField.defaultTextFormat = textFormat;;
と指定してenterFrameでの処理を省く事ができました
ありがとうございます!
546Now_loading...774KB:2009/03/11(水) 14:15:55 ID:jWU3YmnR
CS4 AS3.0について質問です。
AS2.0でオフイメージ描画を

---------------------------------
var bmpData:BitmapData;

/*
bmpDataに色々書き込む処理
*/

mc.attachBitmap(bmpData, 0);
---------------------------------

といった形でやっていたのですが、AS3.0ではattachBitmap()がムービークリップからなくなってしまったようです。
コンパイル時にその旨の警告が出ます。
代用の処理は何かないでしょうか?
547Now_loading...774KB:2009/03/11(水) 15:17:44 ID:h0rAI1W7
オフイメージというのが何なのかしらないけど、3.0で画面に何か表示したい場合にはaddChildメソッドを使えばいいよ
ビットマップを使いたい場合はBitmapクラスを使う

そのコードの流れだとmc.addChild(new Bitmap(bmpData))かな

一度きっちりヘルプの「表示のプログラミング」あたり読んでおいた方がいいんじゃね?
548Now_loading...774KB:2009/03/11(水) 15:47:34 ID:jWU3YmnR
ありがとうございます。
ご教示いただいた方法でうまくいきました。
549Now_loading...774KB:2009/03/11(水) 15:48:56 ID:0kBJEOZw
すみません!超初心者です。急遽仕事でcs4を使用していますが、全くスクリプトが理解できなくて困っています。
誰か教えてください。

今現在、親flaのムービークリップの上に座標指定をしてswfを読み込みました。
読み込まれたswfは画像扱いか、ムービークリップになってしまっているのか・・・??
swf単体では、リンクが貼られて普通に飛んでくれるのですが、読み込むと飛んでくれません。

親fla
on (press) {
_root.halloween_mc.loadMovie("keijiban_note.swf");
_x=30;
_y=40;
}


読み込みたいswfファイルは、一番下のレイヤーに画像、その上のレイヤー3つを
作成して、各レイヤーにムービークリップを作りリンクを貼っています。

on (release) {getURL("https://●●●●","_self");

}

こんな具合です。読み込んだswfのムービークリックを押すと、リンク先に飛ぶようにしたいのですが
どうしたらよいですか?
どなたかお願いします!!
550Now_loading...774KB:2009/03/11(水) 17:20:14 ID:A3/sXqfV
ActionScript3.0 + FlashDevelopで開発してるのですが
どの名前空間からも使用できるグローバル変数ってどうやって定義するのですか?
ドキュメントクラスがあるフォルダにGlobal.asを作って
package
{
var GLOBAL:int = 1;
}
ってやっても何処からも使えません・・・。
551Now_loading...774KB:2009/03/11(水) 17:30:53 ID:A3/sXqfV
あ、すみません
public var GLOBAL:int = 1;でもできないんです。
552Now_loading...774KB:2009/03/11(水) 18:00:10 ID:A3/sXqfV
すみません死んできます。

もしかして1packageにつき1public・・・
553Now_loading...774KB:2009/03/11(水) 18:11:06 ID:A3/sXqfV
>>550-553
無視してください。
解決しました。

他の人のために一応解説を。
ActionScript3.0ではpackageを無名で宣言するとグローバルスコープとなる。
しかしひとつのpackage内で宣言できるpublicな変数や、関数、クラスは一つのみである
したがって下記のコードのコメントを外すとエラーとなる。
package
{
  public globalValue1:int = 0;
// public globalValue2:int = 0;
}

グローバルな変数をたくさん定義したいのであれば
packageを無名で宣言し、クラスをpublic宣言。
そのあとクラスの中にstaticな変数を定義することで
どの名前空間からでもGlobal.hoge; のようにして使えるようになる

package
{
  public class Global
  {
    public static const hoge:int = 10;
  }
}
554Now_loading...774KB:2009/03/11(水) 22:34:55 ID:O8mMeIsp
【メモリについて質問です】

言語:actionscript3.0
開発環境:Flex 2

png画像(約30KB)を多数Bitmapデータで生成しているのですが
ビルド後、1MB程度の swf ファイルが出来上がり
ウェブにアップして swf 開くとメモリ使用量が200MB位になります。

メモリ使用量を減らしたいのですが解決策はないのでしょうか?
555Now_loading...774KB:2009/03/12(木) 03:28:16 ID:1nYazAkq
ガシツヲサゲル
556Now_loading...774KB:2009/03/12(木) 03:59:36 ID:7WCxZCnE
そのアドバイスはないわ
まずBitmapDataを大量に作ってるのが原因だろ
その場合、一つのBitmapDataから複数のBitmapを作ればおけ
557Now_loading...774KB:2009/03/12(木) 04:00:07 ID:1nYazAkq
>>549
初心者が仕事…?
558Now_loading...774KB:2009/03/12(木) 05:44:07 ID:8PkuKE3E
>>554
他にリスナーを弱参照にしてガーベージコレクション(GC)対象にするってのは?
その際にはremoveEventListenerとペアにする。

import flash.system.*; の System.totalMemoryをEvent.ENTER_FRAMEで使うと
随時使用メモリーがチェックできる。
559Now_loading...774KB:2009/03/12(木) 07:10:55 ID:1qFUttQU
>>553
>ActionScript3.0ではpackageを無名で宣言するとグローバルスコープとなる。
>しかしひとつのpackage内で宣言できるpublicな変数や、関数、クラスは一つのみである
なんかすごく間違ってる気がするがw
560Now_loading...774KB:2009/03/12(木) 09:41:59 ID:6ohYI7HB
>>554
new pngのやつ(0,0);
を使うたびにメモリが食われる。
561Now_loading...774KB:2009/03/12(木) 10:05:48 ID:dOMvP/kR
549です。だれかおしえてくださーい!!
562Now_loading...774KB:2009/03/12(木) 16:01:28 ID:ftaKmXSw
>>559
どう間違ってるのか教えてください><

ところでもう一つ質問させてください。
AS3+FlashDevelop+ProgressionでHP作ってるのですが
TextFieldにcssとhtmlをセットして使ってるのですが

<p>
詳細情報
<p>なんちゃら〜</p>
</p>

みたいにタグが入れ子になったときに

 詳細情報
   なんちゃら〜

って表示するようにしたいのですが
TextFieldがDIVみたいなボックス(?)をサポートしてないので無理なんですかね?
563Now_loading...774KB:2009/03/12(木) 16:08:57 ID:8BTCDvMv
AS3.0,WinXP-Pro,FlashCS3です。タイマーが動作しません。
Stageに置いたMC(mc1)のフレームアクションとして、この1フレーム目にSWF開始後
100msec経過時に1回実行するようなASを書いたのですがtraceが出ません。

var timerObj:Timer=new Timer(100, 1);
timerObj.addEventListener (TimerEvent.TIMER, doLater_on);
function doLater_on (timerEvt:TimerEvent) {
trace ("100msec");
}

どうしたら良いでしょうか?
564Now_loading...774KB:2009/03/12(木) 17:02:10 ID:1qFUttQU
start汁
565Now_loading...774KB:2009/03/12(木) 17:16:58 ID:c8Ke9QLv
>>564
startしてなかった・・・

ごめんなちゃい。
566Now_loading...774KB:2009/03/12(木) 19:55:31 ID:6ohYI7HB
>>561
ヒント:それよりもなぜ答えてくれないかを考えた方がいいよ。
567Now_loading...774KB:2009/03/13(金) 01:59:06 ID:u36zRRxy
FlexBuilderでmxml+ActionScript3でアプリケーションを作っているのですが
コンストラクタ的な処理をしたい場合どうすればよいのでしょうか。
mxmlのなかにfunction アプリケーション名()を作ると
コンストラクタを複数定義するんじゃねぇ!と怒られます
どなたかご教示ください。宜しくお願いします
568Now_loading...774KB:2009/03/13(金) 05:12:11 ID:7VPNICRZ
AS3.0,WinXP-Pro,FlashCS3です。Stageに置いたMC(boardM)に子として追加した
MC(rootから見て孫)のフレーム番号が参照できず困っています。

これらの孫MCは7個あり、それぞれフレーム1かフレーム3で最初に設置されます。ところが
プレビューではフレーム2と3しかなく、1への移行は予め記述した置いたMCのフレーム
アクション MouseEvent.MOUSE_OVER で初めて変化します。

原因を探るため、取りあえずMC(boardM)にaddChildAtで子として追加する時点での
フレームを番号を知ろうと思い、仮MCを 
var tmpMC:MovieClip=new tmpClass as MovieClip; として、
trace ("frame= "+tmpMC.currentFrame); 
を書きましたが何も出力されません。また、
getChildByName(インスタンス名).currentFrameでも何も出ません。

フレーム番号を参照できない原因は何でしょうか?
569Now_loading...774KB:2009/03/13(金) 06:36:23 ID:QavnmJBm
as3
box2dを使ったswfでCPU使用率40%アップしてしまうのですが、(メモリは空いてる)
・ビット演算使えるとこあれば使うなど、適切なアルゴリズムでコード最適化する
・アルファ控える
・mcの数抑える

何か他に一般的な策ありますか?とても力を入れて作ってきた作品なのでなんとか見て貰いたいです…
570Now_loading...774KB:2009/03/13(金) 06:55:16 ID:BYLSvjXO
>>568
var tmpMC:MovieClip=new tmpClass as MovieClip;
ここで変換に失敗してnullが入ってるのかも?

>>569
まずどこのコードが一番実行されているか調べるんだ
大抵メインのループで全体の8割くらいの負担がかかってる
そこをとにかく最適化

まぁ物理エンジン使ってるからCPU40%はしょうがないと思うけど・・・w

簡単なプログラムなら物理エンジン使わないで自力で実装っていう手もあるよ?w
571Now_loading...774KB:2009/03/13(金) 12:09:00 ID:lWdyL7kh
>>567
コンストラクタではないけど、creationCompleteイベントでいいんじゃない?
572Now_loading...774KB:2009/03/13(金) 12:41:27 ID:u36zRRxy
>>571
なるほど、creationCompleteイベントで代用できそうです。
ありがとうございます。
573Now_loading...774KB:2009/03/13(金) 19:35:34 ID:guT3emIm
http://clockmaker.jp/labs/080721_as3_pv3d_gw_01/Main.txt

このコードでここでOR演算使う意味ある?
var charCode:uint = (Math.random() * 25) | 0 + 65;
574Now_loading...774KB:2009/03/13(金) 19:54:10 ID:guT3emIm
あれ〜なんでビット演算するとうまくいくの
こういうの苦手
575Now_loading...774KB:2009/03/13(金) 19:56:38 ID:guT3emIm
あ〜こうするのと同じって事か
int(Math.random() * 25) + 65
576Now_loading...774KB:2009/03/13(金) 19:58:40 ID:Gp8P1NNZ
Zがかわいそうですw
577Now_loading...774KB:2009/03/13(金) 21:45:26 ID:guT3emIm
あれ、intって切り捨てか。
でもビットマスクでも切り捨てになるんじゃね
よくわかんね。
578Now_loading...774KB:2009/03/14(土) 08:02:14 ID:3YTbK/XY
演算子|はそれぞれをintに切り捨てしてからORするから、切り捨て用だけに使ってるんだろね
579くるりん子:2009/03/14(土) 20:59:00 ID:g/QhtvfZ
オブジェクト obj が属するクラスの Class オブジェクトを取得するには
どうしたらいいでしょうか?

下記の Java コードと同等のことをしたいのですが。
if (obj.getClass() == obj2.getClass())
580Now_loading...774KB:2009/03/14(土) 22:11:58 ID:UIyo5SBh
質問させてください。
サーバーからロードしたjpgを複製する方法ってあるんでしょうか?
as2でもas3でもいいです。
昔のloadMovieでは無理そうですが、
MovieClipLoaderとかLoader classでは可能なのでしょうか?
581Now_loading...774KB:2009/03/14(土) 23:58:53 ID:9w2fqfAx
質問させてください。
MovieClipの輝度を、ActionScriptで変更したいのですが、
どうすればよいでしょうか?
582580:2009/03/15(日) 00:45:38 ID:yBA/8rwl
自己解決しました。
as2でもBitmapDataをゴニョゴニョやったらなんとかできそうです。
583Now_loading...774KB:2009/03/15(日) 00:45:50 ID:cA2OZTK1
MovieClipクラスのインスタンスは宣言せずとも勝手にプロパティを作れますが、Spriteクラスのインスタンスはできません。
myMovieClip.hogehoge = 1;
mySprite.hogehoge = 1; //エラーがでる
この違いはなぜなのか、また、代入される値が型指定されてなくても良いのはなぜか、がわかりません。教えてください
584Now_loading...774KB:2009/03/15(日) 01:30:36 ID:cbuNy40O
AS3.0,WinXP,FlashCS3
Loader()とloader.contentLoaderInfo.addEventListener()を使ってDLプログレスバー(プリローダー)
を作ろうとしていますが、書籍にある記述では試作用Txtファイルの読み込みでエラーになり
出来ません。以下は書籍の記述の抜粋です。

loader.load(new URLRequest("u4714.jpg"));//DRC.txtだと不可
holder_mc.addChild(loader);
function progressHandler(event:ProgressEvent):void {
var ratio:Number = event.bytesLoaded / event.bytesTotal;
progressBar_mc.scaleX = ratio;
}

3.4MBのJPG:"u4714.jpg"では問題なく動作するのですが、これだと一瞬でロードが終わって
しまいますのでもっと重い"DRC.txt"(26MB)で試すため、loader.load(new URLRequest("DRC.txt"))
にしたところ、
 Error #2044: ハンドルされていない IOErrorEvent : text=Error #2124: 読み込まれたファイルの形式が不明です。

という表示になります。パスもファイル名も確認したのですが・・・
原因は何でしょうか?
585Now_loading...774KB:2009/03/15(日) 02:09:49 ID:UqlrKJs0
Loader クラスは、SWF ファイルまたはイメージ(JPG、PNG、または GIF)ファイルを読み込むために使用します。

http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/Loader.html
586Now_loading...774KB:2009/03/15(日) 02:12:56 ID:IWZ6x0Zt
Loader使うならNextかBulkLoader使った方がいいんじゃないかな
587Now_loading...774KB:2009/03/15(日) 02:33:22 ID:cbuNy40O
>>585
さんきゅうです。

>>586
CS3のヘルプを見ましたが、NextとかBulkLoaderというクラスは見当たりません。
588Now_loading...774KB:2009/03/15(日) 02:44:49 ID:IWZ6x0Zt
ごめんGoogleCodeにあるAS3用ライブラリだよ、ぐぐるといいよ
BulkLoaderは複数のファイルをアップロードしやすくて
Nextは変態的なコードでアップロードできる
589Now_loading...774KB:2009/03/15(日) 02:47:09 ID:IWZ6x0Zt
アップロードじゃなくてロードだね、ごめんよごめんよ
Loaderでやるより分かりやすくロードできるからお勧めだよ
590Now_loading...774KB:2009/03/15(日) 03:39:03 ID:BP8HLNm/
>>583
Spriteは普通のクラスでMovieClipはダイナミッククラス。
ダイナミッククラスは基本的に処理が遅い、エラー発見しにくいので
可能ならSpriteを使うと良い。
591Now_loading...774KB:2009/03/15(日) 08:38:05 ID:cA2OZTK1
>>590 ありがとうございます。ダイナミッククラスというのを初めて知りました。
SpriteよりMovieClipが遅いといわれるのはタイムラインの有無が〜、と参考書で読みましたが、
このダイナミッククラスかそうじゃないか、もかなり影響してそうですね。勉強になりました。
592Now_loading...774KB:2009/03/15(日) 09:48:22 ID:/jcP4lt7
>>581
HSBに変換して明度とか彩度いじって戻す
>>583
Spriteはdynamicでないから
リテラル以外は型指定必要だけどデフォルト設定なら型指定しなくてもエラーでないかも
>>584
テキストファイルはURLLoaderなんじゃね
593Now_loading...774KB:2009/03/15(日) 12:19:41 ID:UqlrKJs0
コンピューターサイエンスをきちんと勉強した人じゃないから
にわか知識だけど
コンパイル時に名前の解決ができるクラスは
メソッドやプロパティの呼び出しをアドレスの参照に置き換えてるから
早いんじゃないかな。
逆に動的に名前解決するいわゆるDynamicなクラスは
動作中に名前とアドレスの一覧を作って、その一覧の中から実際の
アドレスを指すからその分だけコストがかかるんじゃない
594Now_loading...774KB:2009/03/15(日) 14:57:51 ID:OQbtOAmB
ttp://www.flashiroha.com/script/as8.html
ここのサイトの慣性効果付加型の追加のFlashを見て思いついたのですが

・星は1つだけで、マウスには追従せず位置は固定
・星にマウスが触れたとき、マウスの動きに合わせて星が伸びたり、元の大きさに戻ったりする
・ある程度伸びた後(マウスが星の固定位置からある程度離れた時)星は固定位置に戻るように伸縮運動をする(↑のサイトの慣性効果のように)

このような動作を表現したいのですが、どのように記述すれば良いですか?
595Now_loading...774KB:2009/03/15(日) 16:04:48 ID:vm84N3cH
最近ActionScriptの勉強を始めたばかりです。
例えば、
sendMessage("ああ");
↑の処理を単純に無限ループさせたい場合はどのように記述すればいいのでしょうか?
もしくは、一定間隔で繰り返しです。
条件などはないのです
596Now_loading...774KB:2009/03/16(月) 00:01:09 ID:N5pMcpWw
音の動的生成を使おうと考え、
import nu.mine.flashnet.sound.core.*;」で外部のライブラリ使っています。
ところが下記のようなエラーが出てしまいます。

「Error: インターフェイス IAudioDataProvider が見つかりませんでした。」

環境:WinXP,FlashDevelop,Flex SDK,AS3


>>595
while(true){
sendMessage("ああ");
}
で無限にループするとは思います。
でも、抜け出せません。
597Now_loading...774KB:2009/03/16(月) 00:12:50 ID:MrhzB3ar
>>595です
>>569
有り難うございます
色々ググったりして、そこにはたどり着いたのですが、
これを例えば3秒ごとに実行するとしたら、どうなるか教えて頂けないでしょうか?
598Now_loading...774KB:2009/03/16(月) 01:15:43 ID:N5pMcpWw
>>596です。
3秒ごとに一定の処理をさせるということでしょうか?
だとすると
Timerを使うと良いと思います。
コンストラクタに
var cycle :Timer = new Timer(3000);//ミリ秒単位
cycle .addEventListener(TimerEvent.TIMER, cycle_action);
cycle .start();

周期的に行う関数を
private function cycle_action(event:TimerEvent):void {
sendMessage("ああ");
}
といった感じでしょうか?

誰か間違いがあれば修正をお願いします。
599584:2009/03/16(月) 04:58:21 ID:897ZPYfd
DLプログレスバー(プリローダー)について別の質問です。

URLRequest()でSWFロードの状況を知りたいのですが、重いSWF(20MBくらい)を
CS3で生成しようとするとソフトが過負荷になるせいか10MB位のSWFが上限みたい
です(当方、Core2Duo[E6550]のメモリー3GB)。

仕方なくこの10MBで試したのですが、ローカル環境で転送を意図的に遅くしようと
USBメモリからSWFをLoadすると、これでも1秒も経たずにロードされてしまい、プログ
レスバーの変化が見れません。

そこで(変な質問ですが)ネットにUpする以外に、Loadを遅くしてプリローダーの検証
をする方法はありますか?出来れば、1MB/1秒くらいが良いのですが。
600Now_loading...774KB:2009/03/16(月) 05:05:55 ID:xKWjyozl
CS3でプレビューすればダウンロードのシュミレートできるよ
601584&599:2009/03/16(月) 17:35:07 ID:sFFG3dWT
>>600
この場合の「プレビュー」というのは、CS3でCtrl+Enterしたときの
ムービープレビューでしょうか?
Ctrl+Enterは毎回やっていますが、速過ぎて検証できません。
602Now_loading...774KB:2009/03/16(月) 18:01:07 ID:xKWjyozl
>>601
Ctrl+Enterで表示したFlashPlayerのメニューにダウンロードのシュミレートってないかい?
603584&599:2009/03/16(月) 19:54:44 ID:sFFG3dWT
>>602
ありました。
というか、ローカルの1/1000位の速さになりますねw
604Now_loading...774KB:2009/03/16(月) 20:50:11 ID:xKWjyozl
>>603
速度は変えれるよん
605Now_loading...774KB:2009/03/16(月) 21:00:45 ID:X1Opgift
attachMovie で割り当てたムービー クリップの onLoad イベント ハンドラが
数フレーム以上経って呼ばれる事ってあるんですか?
606Now_loading...774KB:2009/03/16(月) 22:57:50 ID:5eVoQfRW
>>605
いつ呼ばれるかは保証されてないんじゃないかな。
607Now_loading...774KB:2009/03/16(月) 23:19:38 ID:12YHPSYZ
onLoadは何かと怪しいから使わない
608Now_loading...774KB:2009/03/16(月) 23:57:25 ID:OhzKNNNN
×シュミレート
○シミュレート
609Now_loading...774KB:2009/03/17(火) 04:18:58 ID:CLk1s3WM
StageにPDFを読み込む方法が分かりません。
FlashCS(AS3.0)をWinXPで使っています。

目的のPDFはTest.pdfという名前ですが、本に載っている方法を参考に
フレームアクションに以下のように書きました。
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, comp);
loader.load(new URLRequest("Test.pdf"));
function comp(event:Event):void {
trace("completed");
}

completedは出ますがStageに何も現れません。
アドバイス願います。
610Now_loading...774KB:2009/03/17(火) 08:21:13 ID:tqrMSgFR
pdfに対応してるのかどうかわからんが、addChildは必要だろ
611Now_loading...774KB:2009/03/17(火) 12:29:16 ID:gHlBcHhC
>>610
レス有難うございます。addChildということで、下のようにしましたが今度は
 1067: 型 flash.net:URLLoader の値が、関連しない型 flash.display:DisplayObject に暗黙で型変換されています。
と出ます。

loader.load (new URLRequest("Test.pdf"));
placeM.addChild (loader);// ←追加した行(placeMは空MC)
function comp (event:Event):void {

JPGやSWFをロードする別のASでは問題なかったのですが・・・
この場合、どうすべきでしょうか?
612Now_loading...774KB:2009/03/17(火) 13:29:13 ID:/xYG7Yww
>>611
URLLoaderはaddChildできません。
それ以前に、>>609のコードはpdfをテキストとして読み込んでいるだけなので、
単純に表示させることは出来ません。

URLLoaderでpdfを読み込み、解析し、表示させることは可能でしょうが、
pdfのファイルフォーマットについての詳しい知識が必要です。
(誰かがクラスライブラリ化してくれていたら別ですが)
また、Loaderもpdfには対応していないため、表示させることは出来ません。

Airが使えるなら、
HTMLLoaderというクラスでpdfを表示させることが出来ます。
613Now_loading...774KB:2009/03/17(火) 16:58:21 ID:eMVPKOEi
http://www.scribd.com/tools/ipaper

こういうのを自分のサイトに埋め込んだらいいんじゃね
ていうか、それしか方法わかんね。
614Now_loading...774KB:2009/03/17(火) 18:36:43 ID:qKC5CEoX
>>612-613
さんくすです。

「Flash便利帖」(毎日コミュニケーションズ)のp044に「MX2004からPDFを
読み込めるようになりました」という一文があったのですが、最初これを誤解し
ASでLoadがOKだと思っていました。
あと、ライブラリに入れようとしたら「読み取りに問題あり」というメッセージが出ました。

やっぱり一工夫必要のようですね。
615Now_loading...774KB:2009/03/17(火) 18:39:16 ID:dUHbn0NK
AS3です。

text.mxmlにて
public function onApplicationComplete():void
{
var hoge:Hoge = new Hoge();
hoge.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onPropertyChanged );
}

public function onPropertyChanged ( e:PropertyChangeEvent ):void
{
trace( "PropertyChanged" );
}


Hoge.asにて
[Bindable]
public var bindVar:Number;
を容易

これでhogeのbindVarが変更されるときonPropertyChangedが呼ばれるだろうと踏んだのですが呼ばれません。
どうすれば呼ばれるようになるのか教えて下さい。
616Now_loading...774KB:2009/03/18(水) 04:45:45 ID:cknNTXR3
Progressionのソース読んでたら
case !!_parent && !!_parent.getSceneByName( value )
とか
q &&= ( ( scenePath.indexOf( "?" ) != -1 ) ? "&" : "?" ) + q;

不思議な演算子の使いかたでてくるんだけど
これ何の意味だかわかる人いる?
617Now_loading...774KB:2009/03/18(水) 05:45:21 ID:dO5i/BOO

こんな演算子も謎
618Now_loading...774KB:2009/03/18(水) 10:45:37 ID:CmfwRq5H
AS2で_rootの1フレに書く内容を外部ファイルにしたい場合、
#include 'root.as'とかすると、
Flashのエディターで整形しようとしたときに
Classファイルじゃないということで
エラーになってしまいますが、全てのASを外部にしたい場合には
どういう書き方をすればいいのでしょうか?
619Now_loading...774KB:2009/03/18(水) 11:34:30 ID:ABdg1kcF
>>618
ターゲットファイルがなければエラーにならないはず
620Now_loading...774KB:2009/03/18(水) 11:35:27 ID:ABdg1kcF
ち、マルチだったか
621Now_loading...774KB:2009/03/18(水) 17:09:36 ID:vrcDWKDX
初歩的な質問ですが、色々ググってみても見つからないので、
こちらで質問させてください。

DateFormatterでミリ秒を表現するとき、なんという文字を使えばいいのでしょうか。
"JJ:NN:SS.ミリ秒"と表示させたいのです。

それとも、探しても見つからないということは、ないということですかね…
622Now_loading...774KB:2009/03/18(水) 20:04:05 ID:ZPuNJb44
てすと
623Now_loading...774KB:2009/03/18(水) 23:22:21 ID:cknNTXR3
DateFormatterってmxのクラスかな
flex_sdk_4/frameworks/projects/framework/src/mx/formatters/DateFormatter.as
にあるソースもみたし、APIドキュメントも確認したけど
ミリ秒には対応してなさそうだよ。
ていうか検索するまえにAPIドキュメントみるほうが早いと思うけど
624Now_loading...774KB:2009/03/19(木) 16:00:49 ID:A2IdOMy4
ミリビョウ使われてるサイト見たことある。解析してみ
625Now_loading...774KB:2009/03/19(木) 16:29:53 ID:pp2ggHrj
うん、Dateクラスでミリ秒まで扱えるから
Dateクラス受け取ってフォーマットして返すようなクラス作るか
拡張すればいいぽ
626Now_loading...774KB:2009/03/20(金) 10:24:10 ID:+/mqXFDc
AS3です
落下するMovieClipを作っています
加速度のプロパティを加えるにはどう書けばいいでしょうか?
[Embed(source = '../lib/star.swf')]
private var EmbedClass:Class;
private var vx:Numbe;
var star:MovieClip=new EmbedClass ();
star.vx = 0;//ここの書き方が分かりません
627Now_loading...774KB:2009/03/20(金) 11:13:32 ID:IDoIc0nH
カスタムクラス作れ
628626:2009/03/20(金) 11:33:00 ID:+/mqXFDc
>>627
カスタムクラスでやってもよいのですが
クラス分けしないでやってみたいのですが方法ってあります?
629Now_loading...774KB:2009/03/20(金) 12:49:51 ID:IDoIc0nH
[Embed(source = '../lib/star.swf')]
private var EmbedClass:Class;
private var vx:Numbe;
var star:MovieClip=new EmbedClass ();
vx = 10;
star.x = vx;

こんなんじゃいかんの?
630Now_loading...774KB:2009/03/20(金) 12:57:41 ID:wkOqhhrE
>>626
初速度0の場合、加速度aと時間tと距離Lは
L=at^2/2

物理の教科書が無ければ、微積の教科書を参照(距離の時間による2次微分は加速度)
631Now_loading...774KB:2009/03/20(金) 13:40:07 ID:XC8D+wL1
多分、加速度じゃなくて速度ベクトルを毎フレームを微分された時間と考えて
足してやろうとしてるんだよ。
632Now_loading...774KB:2009/03/20(金) 13:48:36 ID:XC8D+wL1
star.x += vx か
もし本当に加速度をやろうとしてるなら
加速度は速度の各フレーム毎の変化だから
vx += ax;
star.x += vx;

ActionScriptアニメーションみて確認してみたけど
633Now_loading...774KB:2009/03/20(金) 16:04:41 ID:zEpy/vbQ
AS3で初歩的な質問いいでしょうか
ファミコン並の解像度のゲームを作ろうと思ったのですが
サイズが小さすぎて頭が沸騰しそうです
swfをブラウザ上で拡大して設置する方法は無いでしょうか
ちなみにFlexSDKです
634Now_loading...774KB:2009/03/20(金) 16:17:42 ID:3vYIMgvr
>616
上はわからん。
下は、「三項演算子」でググればたぶんわかる。
きっとURLにGETメソッドのパラメータを付与する式だろ。
635Now_loading...774KB:2009/03/20(金) 17:43:42 ID:lXny2v1Y
>>616
>case !!_parent && !!_parent.getSceneByName( value )

気になって調べてみたら、なんでも、
if (defined(_parent) && defined(_parent.getSceneByName( value )) ) {

}
ことらしい。AS3にはdefinedないんだっけ?
636626:2009/03/20(金) 18:03:32 ID:+/mqXFDc
>>629-632
加速度は本題じゃないんです、紛らわしくてすいません。
mcに自前のプロパティを設定する書き方が知りたいんです

ちょっと別の物で書いてみたら出来ました。
当違いの検証なのかも分かりませんが
書き方以前の問題なのかな?
var mc:MovieClip=new MovieClip();
mc.cnt=0;
trace(mc.cnt);//0

>>627 仰るとおりStar.asを用意するのが慣例なんですかね
すいません、もうすこしいじってみます。
ありがとうございました。
637Now_loading...774KB:2009/03/20(金) 23:32:06 ID:J67OziQv
>>636
アクサ(get/set)は? MCに独自のプロパティ(例:mc.atai とか)が設定できる。
参考: 「一週間でマスターする ActionScript 3.0」(毎日コミュニケーションズ)のp251

・・・結局はカスタムクラスを作ることになるけどw
638Now_loading...774KB:2009/03/21(土) 00:12:50 ID:+WKMBiI4
ファイルを読み込んでアタッチしてる
そのクラスのプロパティにすればいいだけじゃん。
なんで無理に動的変数を使用しようとするのか
分からない。2.0のときの癖か
639Now_loading...774KB:2009/03/21(土) 10:00:26 ID:b6HCju0B
FlashCS3(AS3.0)をWinXPで使っています。

3Dライブラリ実装を勉強するため、『1ランク上の技を身につけるFlashの強化書』(毎日コミュニケーションズ)
のp108を試しに実行しまいたがエラーが出てしまいます。

本の通りライブラリとFlaファイルをprojectフォルダ内に配置し、パブリッシュ設定をしましたが、
Tweenerライブラリに限って
 1046: 型が見つからないか、コンパイル時定数ではありません : Void。
のメッセージが頻発しています。
この本のこの箇所を実行された方がいましたらアドバイスを願います。なお、サポートサイト
ttp://swwwitch.com/books/mycom/theFlash を見てもトラブル対応法は分かりませんでした。
640Now_loading...774KB:2009/03/21(土) 10:21:09 ID:fKmdslcf
>>639

AS3なら、Voidじゃなくてvoid(全部小文字)だと思うんだけど、そんな単純な話ではない?
641Now_loading...774KB:2009/03/21(土) 10:46:39 ID:b6HCju0B
>>640
ホントだ・・・ Voidになってた。面倒だけど修正してみます。
ちなみに、ttp://code.google.com/p/tweener/ からDLしました。
642Now_loading...774KB:2009/03/21(土) 11:38:16 ID:fKmdslcf
>>641
DLしたのってAS3用のtweener?
643Now_loading...774KB:2009/03/21(土) 23:25:07 ID:ojZyo8/h
Flash製作初心者の質問スレッド レイヤー39
から紹介されて来ました。
質問よろしいでしょうか。
ttp://cs3book.flashoop.jp/wiki/index.php?%E7%89%A9%E7%90%86%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B2%E3%83%BC%E3%83%A0#p75e4fff
のサイトにあるスクリプトを自分の環境で動作させたのですが、上手く動きませんでした。
エラーはいくつか表示されたのですが、
未定義の可能性が高いメソッド(プロパティ)エラーや、
同じ型のライブラリシンボルにリンクしているため、flash.display.MovieClipをサブクラスとする必要があります
などのエラーが表示されます。
644Now_loading...774KB:2009/03/21(土) 23:26:05 ID:ojZyo8/h
Box2DFlashAS3が上手く読めれていない可能性を考えたのですが、
Box2DFlashAS3に入っている『HelloWorld.fla』は、エラーが出ずに出力できました。
ただし、他の方のサイトでBox2DFlashAS3を使ったサンプルセットをDLさせていただいて
その中のflaを使用した場合は、やはりエラーが出てしまいます。
エラー内容は上記と同じ、未定義関係のエラーです。
スクリプトのエラーなのか、もしくはそれ以前のファイル構造で間違いがあるのでしょうか。
アドバイスを頂けると助かります。
また、もしよければ、上記サイトのスクリプトで動かせているFlaとASをお持ちでしたら、参考にさせていただけると助かります。
図々しいお願いではありますが、どうぞよろしくお願いいたします。
645Now_loading...774KB:2009/03/21(土) 23:46:28 ID:JJnguftr
そんな文誰も読みたくない
人の気持ちが分からないのは致命的
書き直してくれ
646Now_loading...774KB:2009/03/21(土) 23:58:06 ID:+WKMBiI4
Box2Dは移植されたライブラリだから
エラーでやすいね。気をつけてかかないと。
でも、その情報だけじゃ何が原因か漠然としすぎてて
さっぱりだけど
647Now_loading...774KB:2009/03/22(日) 01:46:06 ID:pXj7JNZ4
プログラム解読していけば知識にもなって良いんじゃないかい?
648Now_loading...774KB:2009/03/22(日) 21:07:49 ID:APdCqyAq
FlashCS3(AS3.0)をWinXPで使っています。

社内の他の人が別のソフトで作った6個のSWF(swf0〜swf6)をAS3で組んだ
SWF内に入れ子としてswf0→swf6の順でLoadした際、

Branching::script:rdcmndResume = 1;
deepak branching : scripteval:[object Object];

というメッセージが現れます。これは何を意味しているのでしょうか?
ググりましたが分かりませんでした。
649Now_loading...774KB:2009/03/22(日) 21:34:15 ID:PCij10Uc
>>648
swf0-swf6内部でtrace()してる、ってわけではないんだよね?
650Now_loading...774KB:2009/03/22(日) 23:28:12 ID:APdCqyAq
>>649
どうも。
試しにswf0をMotionDecompiler2でデコンパイルしたところ、rdcmndResumeという
変数がありました。
しかしこれはASでtraceしている訳ではなく、Player9のデバッグ機能(?)で出力
されている模様です。
同様に考えると、「deepak branching」もこの機能で出力されているのかも知れません。

エラーとは明示されていないので、その手前のお知らせメッセージなのかも。
651Now_loading...774KB:2009/03/23(月) 02:39:46 ID:psz/3AYi
ちょっとした疑問なのですが、
ActionScript2.0リファレンスだとObjectクラスがdynamicクラスになっていません。

2.0
http://livedocs.adobe.com/flash/9.0_jp/main/00002035.html
public class Object

3.0
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/Object.html
public dynamic class Object

これって何か理由があるんでしょうか。

プロトタイプベースとクラスベースの違いなのかなと思ったのですがよくわかりません。
MovieClipクラスはどちらもdynamic classになってますがObjectクラスだけ特別なのでしょうか。
652Now_loading...774KB:2009/03/23(月) 07:40:01 ID:DEEJIXBK
ただ単に書き忘れじゃねーのw
653Now_loading...774KB:2009/03/23(月) 08:27:03 ID:HedBTQRa
>>651
as2.0のclassは全てdynamicだから指定する必要がないとか
654Now_loading...774KB:2009/03/23(月) 08:28:30 ID:HedBTQRa
ごめん、object classの間違い
655651:2009/03/23(月) 09:18:31 ID:psz/3AYi
ありがとうございます。
書き忘れかなとも思ったのですがネット上のリファレンスもCS3のリファレンスも同じだったので意図的なのかなと思いました。

2.0だとプロトタイプベースでclassは中身の規則が1.0のまま。
dynamicは単にプロパティを後で追加できるかどうかのフラグにすぎない。
Objectクラスは例外でプロパティを後で追加できる。

3.0だとクラスベースなのでclassの規則は絶対。
dynamicを指定するとclassの属性そのものが異なる。
Objectクラスも例外ではない。

ってことかなあと予想してます。
656Now_loading...774KB:2009/03/23(月) 11:19:41 ID:MKLIFgZQ
見当違いだと思うけど、
Objectをdynamicにするとそれを継承する全クラスがdynamic属性になっちゃうとか
657Now_loading...774KB:2009/03/23(月) 11:56:50 ID:N0Ra0SgM
progression + FlashDevelop + AS3 で開発してるのですが
アクセス者のIPアドレスを取得することはできますか?

「こんにちは!またお会いしましたね」 とかやりたいのです。
658Now_loading...774KB:2009/03/23(月) 12:46:55 ID:cB4j1nPK
そういうのはSharedObjectかcookieでやりゃいんじゃね?
659651:2009/03/23(月) 23:55:38 ID:psz/3AYi
>656

あーなるほど。
3.0だとdynamicクラスのサブクラスはdynamicじゃなくなってますね。

3.0
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/statements.html#dynamic

2.0
http://help.adobe.com/ja_JP/AS2LCR/Flash_10.0/help.html?content=00000175.html
660Now_loading...774KB:2009/03/24(火) 11:06:55 ID:aO7MWcKi
ローカル環境にてプロジェクタファイル?(exe)を動作させています。
環境はMacromedia Flash Professional8 (AS2.0)でOSはWindows Vista 32bitです。
やりたいことは画面の更新タイミングとflashの同期を上手くとることなのですが。どうしても上手くいきません。


現在Flash側の設定をフレームレート100
ディスプレイのリフレッシュレートを100にして動作させています。解像度は1280*1024
動作させるとどうしても画面の切れ目と言いますか下から上へと書き換えていくような部分が見えてしまいます。
そこでディスプレイの垂直同期信号のようなものを取得する方法はないでしょうか?
または、上手く同期をとる方法がありましたらアドバイスをお願いいたします。
661Now_loading...774KB:2009/03/24(火) 11:57:39 ID:l3xg3CgO
as3です

1フレ:
ドキュメントクラスとしてMain.asを読み込み
Main.as
gotoAndStop(2);
textField.text="hi";
2フレ:
textFieldを配置

当然1フレからtextBoxを参照できないのでエラーです
Main.asにactionscriptをまとめて書くにはどうやって書けばいいのでしょうか?
よろしくお願いします
662Now_loading...774KB:2009/03/24(火) 13:35:40 ID:l3xg3CgO
as3+flashCS3です。連投すいません。
外部クラスファイルから、ステージの幅を取得するにはどうすればいいのでしょう?
ステージサイズは400x600にしてあります

1フレ
var main:Main=new Main();

Main.as
package {
import flash.display.Sprite;
import flash.display.Stage;
public class Main extends Sprite {
function Main():void {
trace(this);//[object Main]
trace(stage.stageWidth);//エラー
} }}
//TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
とエラーになってしまいます

よろしくお願いします
663Now_loading...774KB:2009/03/24(火) 20:12:32 ID:f8zQIBAr
>>661
フレームカウントはナンボなん? フレームをカウントする変数(var count:uint)とかを
置いて count>0 は?

>>662
root参照にMovieClip(root)は?
664Now_loading...774KB:2009/03/24(火) 20:34:06 ID:KyfJPKIe
環境)WinXP-Pro,FlashCS3-Pro(Player9.0,AS3.0)

外部SWFを親SWFに入れ子として読み込んだ際、そのサイズ(幅)が記述の仕方によって
異なるので悩んでいます。

var swfLoader:Loader = new Loader();
swfLoader.contentLoaderInfo.addEventListener (Event.INIT, initLoad_on);
で trace ("swfLoader= "+swfLoader.contentLoaderInfo.width); ・・・ @とすると、
これは swfLoader= 40 になります。

ところが、
function initLoad_on (loadEvt:Event):void {
trace ("loadEvt= "+loadEvt.target.content.width); ・・・ A
}
では loadEvt= 24.75 となり、幅が違います。
@とAではどちらが正しいのでしょうか?(何故違いが生じるのでしょうか?)
665Now_loading...774KB:2009/03/24(火) 22:27:33 ID:++TXRhnu
>>664
外部SWFとやらのサイズが1フレ目とそれ以降で変化してないか?
666Now_loading...774KB:2009/03/24(火) 23:55:15 ID:Hjfh2YPW
>>665
うーん、同じなのですが。。。
667Now_loading...774KB:2009/03/24(火) 23:58:37 ID:++TXRhnu
>>666
それで、外部SWF本来の大きさは40と24.75のどちらなの?それともそのどちらでもないの?
668667:2009/03/25(水) 00:19:13 ID:gAHRjt4M
外部SWF読み込みプログラムを書いてたところだからついでにテストしてみた。

loaderObj = new Loader();
var url = new URLRequest("sub.swf");
loaderObj.load(url)
trace ("swfLoader= "+ loaderObj.contentLoaderInfo.width);

ここでのtrace()は無意味。ロードも何も動いてないからサイズは不定。
そもそもFLASHの出力ウィンドウに
Error: Error #2099: 読み込み中のオブジェクトは、十分に読み込まれていないので、その情報を表示することができません。
っていうエラーが表示されているはず。

loaderObj.contentLoaderInfo.addEventListener(Event.INIT, initLoad_on);
function initLoad_on (loadEvt:Event):void {
 trace ("loadEvt= "+loadEvt.target.content.width);
}
ここでのサイズは正しい。

ついでに
loaderObj.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedSWF);
これでも試したけど、当然、同じサイズになる。

よくわかんないのが、>>664の@の記述なんだけど、それだけだとロードしないよね?
669Now_loading...774KB:2009/03/25(水) 01:17:39 ID:NgKxofqa
AS3において、
FlashDevelop
CS3
Flex Builder

この環境が今あるのですが。みんなどんな感じに組み合わせてますか?
例えばCS3でやっててASはFlashDevelopで書くって人いますよね
670Now_loading...774KB:2009/03/25(水) 02:03:42 ID:637s2VSb
金持ってるな羨ましい。
671Now_loading...774KB:2009/03/25(水) 06:19:03 ID:zHUWI5vG
FlexSDKとcmdとwonderflでやってる
672Now_loading...774KB:2009/03/25(水) 06:26:45 ID:IsJm89fi
なんでwonderflのスレがないんだろう
673Now_loading...774KB:2009/03/25(水) 07:05:27 ID:jqbChLig
AS2について質問です。
TWEENERというライブラリを使用しているのですが1フレ目でMCにトゥイーンさせて、トゥイーン中にGOTOとかで別のフレームに飛ばすとトゥイーンの無限ループにハマります。
何をつけたせば脱出できますかね。
674Now_loading...774KB:2009/03/25(水) 08:39:29 ID:ZHmeYcXH
>>669
エディタは軽い方が好きなのでCS3とjEditでやってます
FlashDevelopは入れてあるけど使ったことないな
やっぱりIDE使ったほうが効率は良いもの?
675Now_loading...774KB:2009/03/25(水) 08:51:01 ID:TlJcB1Wk
>>674
Flashdevelop
変数やカスタムクラスが入力候補に表示される
プロジェクト管理
スニペット

jEditは使ったこと無いけどAS3の補完機能ついてるの?
676662:2009/03/25(水) 11:05:05 ID:TlJcB1Wk
>>663
アドバイスありがとう
>root参照にMovieClip(root)は?
nullになってしまいました。
もう少しシンプルにしたものです。

フレームアクション。ムービークリップCatをリンケージ
var myCat:Cat=new Cat();
addChild(myCat);

Cat.as
function Cat():void {//コンストラクタ
var myroot:MovieClip=this.root as MovieClip;
trace(myroot);
trace(MovieClip(root));
trace(this.root);
x=stage.stageWidth/2;
y=stage.stageHeight/2;
}
全部nullとエラーでした

addChild(myCat);が実行される前なのが原因でしょうか?
画面中央に配置するにはどう書けばいいのでしょう?
x=stage.stageWidth/2;
y=stage.stageHeight/2;
677Now_loading...774KB:2009/03/25(水) 11:24:42 ID:TlJcB1Wk
>>676
引数で渡すのがベストでしょうか?
var myCat:Cat=new Cat(stage.stageWidht/2,stage.stageHeight/2);//フレームアクション
function Cat(x:Number=0,y:Number=0):void {//Cat.as コンストラクタ
678Now_loading...774KB:2009/03/25(水) 11:59:11 ID:ZHmeYcXH
>>674
jEditは基本的にカラーリングのみ
プラグイン追加でもうちょっと機能追加出来るとおもうけど
サクサク使いたくて選んだからほとんどそのまんま使ってる

FlashDevelop高機能だね
ちょっと試して実感してみることにするよ、ありがと
モッサリしてないといいな
679Now_loading...774KB:2009/03/25(水) 12:00:08 ID:ZHmeYcXH
アンカミス >>675
680Now_loading...774KB:2009/03/25(水) 12:27:25 ID:ZHmeYcXH
>>676
addEventListener(Event.ADDED, initialize);
でinitialize関数の中でならstage参照出来た
681657:2009/03/25(水) 13:31:48 ID:HXZ1hbj4
>>658
やはりActionScript3.0では無理ですか。
Flashvarsでswfにipアドレスを渡そうかなと考えたのですがどう思いますか?
もっと効率いいやり方とかあったらアドバイスよろしくお願いします。
682662:2009/03/25(水) 13:32:01 ID:TlJcB1Wk
>>680
Event.ADDEDで調べたら参考になるサイトがものっそ出てきました
色々と納得できて満足です
ありがとう
683Now_loading...774KB:2009/03/25(水) 13:47:22 ID:3/1qaiqb
>>681
無理じゃなくって、やりたいことはipアドレス必要としないんじゃないの?って
話だと思うんだが。
そりゃサーバ介してipアドレスチェックとかは出来るだろうけどさ。
684Now_loading...774KB:2009/03/25(水) 15:18:54 ID:z1Ci31Db
>>681
FLASHでIPを受け取って、それでどうやって再訪問チェックするつもり?
658の回答で十分。IPなんて取る必要ない。
てかsharedobjectについて調べてもないだろ?
685Now_loading...774KB:2009/03/25(水) 17:49:44 ID:637s2VSb
http://www.youtube.com/watch?v=QHnTpFyLGdk

FlashDevelopもいいけどMacだったらTextMateがいいよ
686Now_loading...774KB:2009/03/25(水) 18:39:32 ID:637s2VSb
http://blog.simongregory.com/09/as3-autocompletion-in-textmate/

こっちも載せとけばよかった
687Now_loading...774KB:2009/03/25(水) 19:02:47 ID:z1Ci31Db
>>685
textMateは日本語使えないからダメ。
無理矢理使う方法あるけどイマイチ。
688Now_loading...774KB:2009/03/25(水) 19:09:00 ID:637s2VSb
IPアドレスだったらPHPで簡単に調べられるよ。
Flashはクライアント側で動くからIPアドレスは取得できないぽいよ。
IPアドレスを取得できるのはサーバー側だよ。
689Now_loading...774KB:2009/03/25(水) 20:16:16 ID:9lTU2TcX
http://github.com/ringo/progression-framework.tmbundle/tree/master

とりあえず、Progressionフレームワーク用のTextMateバンドルこの前
作ったからアップしといた。プロジェクトとテンプレート作るぐらいしか
機能作ってないけど
690Now_loading...774KB:2009/03/25(水) 22:33:39 ID:eh2j8qT7
IPアドレスは固定とは限らないのに、それを識別に使ってもしょうがないだろ
SharedObjectで充分
691Now_loading...774KB:2009/03/26(木) 02:39:26 ID:J904TCl/
AS3です。
NetStreamを使ってmp4を再生しているのですが、seekした直後にノイズ(というか前の位置の音)が一瞬だけのってしまいます。
seek前にボリュームを0にすると消えるのですが、seek後に再度ボリュームを戻すとやはりノイズがのってしまうようです。
ボリュームを戻すタイミングをseek直後、NetStream.Seek.Notify、NetStream.Buffer.Fullなどいろいろ変えてみたのですが無駄でした。
とりあえずTimerを使って250ミリ秒後にボリュームを戻すようにすると、ノイズ部分は回避できたのですが、他にスマートな方法はないでしょうか?
よろしくお願いします。
692Now_loading...774KB:2009/03/26(木) 04:21:12 ID:EPU+4gAb
>>667
すいません。ご指摘の
swfLoader.contentLoaderInfo.addEventListener (Event.INIT, initLoad_on);

trace ("swfLoader= "+swfLoader.contentLoaderInfo.width); ・・・ @
は直に繋がっていません(誤解を招いてしまいました)。

今回のコンストラクタ以降の記述を抜粋してレスしようと思いましたが、2chブラウザ(Live2ch)が
エラー表示するのでサイズ調整用のJPGと共にZipでUpします。
http://uproda11.2ch-library.com/167970yCh/11167970.zip
(何故かDL-Keyが設定されました。キーは 1 です)

自作のサイズが明確なSWF(160x160) ext1_1.swf では、swfLoader1= 160,loadEvt1= 173.4
swfLoader2= 160,loadEvt2= 173.4 となり、loadEvtが大きな値を与えます。
以上は解決の糸口になりますでしょうか?
693Now_loading...774KB:2009/03/26(木) 04:44:37 ID:yqQLdrWb
contentLoaderInfo.width ロードされたコンテンツの規格幅
content.width ロードされたコンテンツのルート表示オブジェクトの幅
らしいから、例えば、ロードされたときにコンテンツを拡大したりするとcontent.widthの値は変わってくると思う
694Now_loading...774KB:2009/03/26(木) 11:05:58 ID:CHqqqj1h
>>692
Upローダから拾ってきてテストしてみた。メインのasは
var smpl = new AS_Wink_02();
これだけ。AS_Wink_02.asには手を加えてない。

一緒に入っていた画像で試したら、
swfLoader1= 428
loadEvt1= 428
swfLoader2= 428
loadEvt2= 428
ってなる。元の画像と同じサイズだから問題なし。ここまではいいよね?
もしこの時点で428じゃない数値になっているのだとしたら、Upローダに上がってる
AS_Wink_02.asと違うことしてない?

外部SWFでも試したけど同じだった。
ただ、あえて違うようになる外部SWFを作る事は簡単で、外部SWF側で、
this.width *= 2;とか、外部SWF内部で表示しているMCをSWF外に
移動させたりすると(mc.x = -100とか)、外部SWF自体の大きさが変化するので、
それを読み込むローダ側でもサイズが違ってくる。

もし、Event.EnterFrameを設定してサイズをtrace()で表示してみるといいかも。
1フレ毎にサイズが変化してるかもしれない。
695Now_loading...774KB:2009/03/26(木) 11:33:54 ID:OMYXNhPK
FlashDevelopでAS3を実行するときってプルダウンからと
Ctrl+F8
しか無理?

実行アイコンが欲しいな
696Now_loading...774KB:2009/03/26(木) 17:57:00 ID:yqQLdrWb
F5
697Now_loading...774KB:2009/03/26(木) 22:12:18 ID:vZDXworf
AS3.0です
shift-jisのxmlの読み込みが安定しません。
typeエラーがでる・・・3回に1回ぐらい・・・
System.useCodepage = true;
あたりがおかしくなっていると思うんですが
698Now_loading...774KB:2009/03/26(木) 22:54:12 ID:offECV2z
ものすごく初歩的な質問になってしまうのですが、
getURLとstop()を同時に使おうとすると自動リピートになってしまいます。
クリックしたらいつでも違うページに飛ぶようなアイコンをフラッシュで作りたいのですが、
なんでstop()入れているのにとまらないかわかりません。。。
対策はありませんか?
699Now_loading...774KB:2009/03/27(金) 00:19:05 ID:p0VLxbLZ
PhotoShopで作った画像をCS3にそのままドラックしたら変なフォルダまで付いて来たのですが、そのフォルダを消すと画像まで消えます。


フォルダを消して画像だけをシンボル化したいのですが無理ですかね?
700Now_loading...774KB:2009/03/27(金) 00:35:08 ID:Xwk/On0K
>>693-694
どうも。
Loadされたものを特に拡大・縮小していないのですが・・・

とりあえず、実際に表示された外部SWFは元のサイズの
ままなのでこれで大丈夫だと思います。

有難うございました。
701Now_loading...774KB:2009/03/27(金) 00:38:06 ID:/wTgwhbS
質問なのですが、ブログパーツ形式のFlashを作っております。

ExternalInterfaceを使ってjsと連携をとっているのですが、下記エラーが出て煮詰まっています・・・。

uncaught exception: Error calling method on NPObject! [plugin exception: Error in Actionscript. Use a try/catch block to find error.].

色々試しているのですが、どれもうまく行かなくどうすればいいでしょうか?
どなかた教えてください・・・。
702Now_loading...774KB:2009/03/27(金) 00:52:10 ID:/wTgwhbS
701です。

エラーを吐き出してるのは、Firefoxのfirebugです・・・
ActionScriptは2です・・。
よろしくお願いします・・・。
703Now_loading...774KB:2009/03/27(金) 01:56:30 ID:o7QGub5E
>>698
stopさせるmcの階層が違うとか。

>>699
フォルダ?ライブラリに?フォルダ内の画像だけ外に出せば?

>>701
as側でのエラーで大体そのメッセージが出る。
何かの参照が切れてるとかそんなのが多いのでtraceしまくれ。
704Now_loading...774KB:2009/03/27(金) 01:59:46 ID:3nguf5yU
質問です。FlashCS3で、as3をやっています。

Flashオーサリングツールで、2つレイヤーを用意し、
上のレイヤーに掛け布団、下のレイヤーに敷布団のムービークリップを配置。
そこにnewで人間インスタンスを生成、addChildすると、
人間は一番上(掛け布団の上)に出てきますよね。

掛け布団と敷布団のあいだに人間を挟みたい場合はどうすべきでしょうか。
自分なりに考えると、上下レイヤーのあいだに3番目のレイヤーを作り
そこに空間インスタンスを配置。空間.人間 という階層構造にすれば意図した表示になりそう。
ですが、これが一般的な方法なのかどうかがわかりません。

asからレイヤーの順序をいじったり、指定したレイヤー上にインスタンスを乗っける方法はあるのでしょうか。
それとも、レイヤーというのはオーサリング上の概念であって
スクリプトからはコントロールできないものなのでしょうか。
長文すんません。
705Now_loading...774KB:2009/03/27(金) 02:05:39 ID:fVst+tdv
>>704

配置したMovieClipにインスタンス名をつければasからいじれる

addChildした順に表示されるから
敷き布団
人間
掛け布団
の順にaddChildすればうまくいく

またはaddChildAtで重なり順を指定して表示することができる

詳しくはリファレンスみろ
706Now_loading...774KB:2009/03/27(金) 02:17:18 ID:/wTgwhbS
>>703
返信ありがとうございます。
同じサーバー内だと正常に動くのですが、ブログパーツ形式なので、違うドメイン先での動作が必要となります。
その際に、先ほどのエラーが発生します・・。

Security.allowDomain("*");やswfobjectのso.addParam("allowScriptAccess", "always");などは設定しているのですが…。
なかなか解決方法が見出せません…。
707Now_loading...774KB:2009/03/27(金) 02:27:19 ID:3nguf5yU
>>705
ん〜、なるほど
ただの絵と思わずに、布団にも名前をつけるとコントロールできるんですね。
ありがとうございました!
708Now_loading...774KB:2009/03/27(金) 11:08:16 ID:rIpKzdQz
>>706
crossdomain.xmlが原因?
709Now_loading...774KB:2009/03/27(金) 18:47:17 ID:YBKdph9d
>>688
ありがとうございます。
Javascriptかperlでip取得してswfにflashversで送る手法でやってみます。
再訪問を確認するには、訪問者IPをXMLかなにかに記憶して、そのIPリストに同じIPがあれば
ってかんじで実現しようとしてました。
710Now_loading...774KB:2009/03/27(金) 18:54:19 ID:VosdbYeY
>>709
どうしてそこまでIPアドレスにこだわるの?
どうしてSharedObjectに関するレスはことごとくスルーなの?
IPが同じだって、別の人の可能性もあると思わないの?
それとも他のID情報かなにかと関連づけしてあるの?
711Now_loading...774KB:2009/03/27(金) 20:01:08 ID:ld6BMcRo
でもちゃんとやるなら
PHPかCGIでログインページ作って
DBにユーザー名とパスワード入れるのが
あとあと機能の追加などしやすいかも
712Now_loading...774KB:2009/03/27(金) 22:53:25 ID:7WZqawbh
自分の理解した方法しか頭にないんだろうな。
Shared Object?何それ?分かんないからipが同じかチェックした方が簡単じゃん。
そんな風に思ってんじゃない?
713Now_loading...774KB:2009/03/28(土) 07:05:47 ID:TzSVBD2k
3Dゲームとアニメを作ろうとしているのですが、FlashがいいかShockwaveがいいか迷ってます。
どちらがいいでしょうか?
714Now_loading...774KB:2009/03/28(土) 07:46:57 ID:CTy5Y4F4
Shockwaveってなんで開発放棄されたの?
715Now_loading...774KB:2009/03/28(土) 09:20:36 ID:vGryTDzF
Directorはまだ開発されてるみたいだけど
ShockWaveって消えたんだ
716Now_loading...774KB:2009/03/28(土) 10:23:35 ID:JhDFs7By
SWFProfilertという、グラフ状でメモリ監視できるライブラリを知って使ってみたのですが、
自分の作ってるflashで使って見ると、最初のスキップできるオープニングでアニメーション等をやって、
オープニングが終了した時点で、その時に作った&使ったSprite等を全て消した時にGC機能を使ってからメモリ使用量のグラフを見ると、
GC前はグラフ表示が上端にあったのが、表示の中央ぐらいの高さまでしかグラフは下がりませんでした。
これは消そうにも消されてない記述ミスがあるから消えてない物が残ってるのでしょうか?

テストで新しいflaファイルを作って、200枚のスプライトを作って消して、GC機能を使ってグラフ表示を見ると、
GC前はグラフ表示が上端にあったのが、グラフ表示の下端、監視開始した瞬間程の高さまでグラフは下がっていました。

どれ程の作業や作った物等があっても、それらの物を全て消した場合、このようにメモリ使用量が監視開始程まで少なくなるのが正常なのでしょうか?
それとも、作業をした後に全て消してみても処理の残骸?みたいなのが残って、メモリは消費されたままという事もあるのでしょうか?
717Now_loading...774KB:2009/03/29(日) 11:30:23 ID:8xPHgamY
>>713
Flashを進めとく。
718Now_loading...774KB:2009/03/29(日) 21:37:14 ID:UzOyq6xC
as2(Flash cs3)について質問です。
同階層にmc_1〜mc_100の100個のmcがあったとして、
配列Hairetsu[i](iは1〜100)の値が真なら対応する番号のmcを表示、というスクリプトを作りたいんですが、
ターゲットパスの一部に変数を使いたいばあいはどう記述すれば良いのでしょうか?
719Now_loading...774KB:2009/03/29(日) 21:49:39 ID:JVqsulfV
>>718
配列アクセス演算子
720Now_loading...774KB:2009/03/29(日) 21:49:43 ID:+B6VRg9S
>>718
this["mc_"+i]
721Now_loading...774KB:2009/03/30(月) 01:05:48 ID:LdBrXexp
以前書いた、Progressionにおける
SceneObjectクラスの220行目になどで使われている
case !!_parent && !!_parent.getSceneByName( value ) : { throw new IllegalOperationError( ErrorMessageConstants.getMessage( "ERROR_9004" ) ); }

!!という演算子の使用ですが、

JavaScriptのライブラリJQueryのソースにて
is: function( selector ) {
return selector ?
jQuery.multiFilter( selector, this ).length > 0 :
false;
},
と以前は書かれていた関数が、以下のように変更になっている事より理解できました。
is: function( selector ) {
return !!selector && jQuery.multiFilter( selector, this ).length > 0;
}

演算子!!はselectorがundefinedであった場合も確実にfalseが返る事を担保するために
使用されていたのですね。
冷静に考えると単純な事でなんですぐに気づかなかったのかという感じですが。
ご参考までに

722718:2009/03/30(月) 01:09:47 ID:HQdm+WAC
>>719,720
ありがとうございます!解決しました。
723Now_loading...774KB:2009/03/30(月) 01:13:01 ID:eDz4MN9D
724Now_loading...774KB:2009/03/30(月) 12:21:57 ID:5XPGLrGL
>>721

勉強になったYO!
アンガト3
725Now_loading...774KB:2009/03/30(月) 17:23:46 ID:q0ge9c4z
actionscript3でランダムで色指定したいんですが
取得したいのが0x666666とか0xAAAAAAとかのゾロ目のグレー系です
Math.random()を使った計算でグレー限定取得なんてできるでしょうか?
726Now_loading...774KB:2009/03/30(月) 17:53:23 ID:P3PiFLCT
>>725
var c:uint = Math.random() * 0xf;
c |= c << 4;
var color:uint = c << 16 | c << 8 | c;

こんなんでどう?
727Now_loading...774KB:2009/03/30(月) 22:41:03 ID:0158/NF2
FLVでプログレッシブダウンロードで
10分の動画の3分から開始したいんですが
どうやるか情報ないですか?
728Now_loading...774KB:2009/03/30(月) 22:55:09 ID:q0ge9c4z
>>726
スクリプトありがとうございます
処理の詳細は私の頭ではまだ理解できていませんが・・・何度か試した所ランダムでグレー表示がされました
ありがとうございます!
729Now_loading...774KB:2009/03/30(月) 23:31:09 ID:P3PiFLCT
>>727

netStreamのplayで開始時間指定できないか?

>>728

まず0x0〜0xFの値をランダムで選ぶ 例として、0xFが選ばれたとする

c |= c << 4 は c = c << 4 | c と同じ
0xFを2進数で表すと1111なので、4ビット左にずらすと11110000つまり0xF0となる
0xF0 | 0x0F で 0xFFとなり、ゾロ目の2桁ができる。

c << 16 | c << 8 | c
で 0xFF0000 | 0x00FF00 | 0x0000FF となり 0xFFFFFF 各成分全て同じ値のグレーになる
730Now_loading...774KB:2009/03/31(火) 05:25:41 ID:SvCV0sUs
>>729
FLVPlaybackコンポートを使っていてまだその辺り勉強できてませんでした
ヒントありがとうございます
また3分から5分まで再生して一度プレイヤーを消してボタン出しそれを押すと
5分から最後まで再生したいのですがこれも可能でしょうか?
731Now_loading...774KB:2009/03/31(火) 08:51:24 ID:a/VBj/Ts
自分自身のムービーを切り替えるボタンを含んだムービーで
呼びだされるムービーへ変数を渡したい場合
自分が消えるので普通の方法だと難しいと思い
GETメソッドを使って次のムービーに変数を渡そうと考えました

1,2,3というムービーがあり、ボタンを押すと1>2>3>1と切り替わる場合で
元はボタンのon(release)イベントでthis.LoadMovie("2.swf")するだけで動いたのですが
今再生中のムービーのフレーム位置を次のムービーに引き継ぎたいと思いました
そこで

on(release){
level0.frame=_currentframe;
this.loadMovie("2.swf","GET");
}

にして
2.swfにて1フレーム目に

this.gotoAndPlay(_level0.frame);

と書いたのですが上手く動きませんでした
FlashPlayerだとGETメソッドは送れないのでしょうか?
WindowsXPにてFlash CS4を利用していますがActionScriptは2.0です
732731:2009/03/31(火) 09:51:44 ID:a/VBj/Ts
level0.frame=_currentframe;

_level0.frame=_currentframe;

ですね、表記間違えです
下のでも上手くいきません
733Now_loading...774KB:2009/03/31(火) 16:48:04 ID:Pxi6KfJ3
ActionScript3.0

1. あらかじめムービークリップhogeAをステージ上に配置します
2. タイムラインから別のムービークリップhogeBをステージ上に動的に配置します(addChild(hogeB))
3. ムービークリップhogeBからムービークリップhogeCをステージ上に動的に配置します(stage.addChild(hogeC))
4. ムービークリップhogeCからムービークリップhogeAの座標を参照したいのですが、どうすればいいか分かりません

MovieClip(root).hogeAとする →強制型変換に失敗しました。flash.display::Stage@384df99 を flash.display.MovieClip に変換できません。と出る
Object(root).hogeAとする   →flash.display.Stage にプロパティ hogeA が見つからず、デフォルト値もありません。と出る

AS2.0なら_root.hogeAだけで良かったのに……なんでこんなわけ分からんことになってるのか意味不明です。
どうやったら出来るでしょうか。ご教示下さい
734Now_loading...774KB:2009/03/31(火) 17:06:10 ID:+SVPg9ny
>>732
面倒だから、ベースswf作って、そこに読む込むようにしたら?
735Now_loading...774KB:2009/03/31(火) 17:29:49 ID:YhbgJsaq
>>730
できるから頑張れ

>>733
俺はAS2がわからないからどう意味不明なのかわからないけど、
表示オブジェクトのツリー構造と、rootがどういうものなのかを意識すればわかると思う

まず、flashの表示オブジェクトの親は必ずStageになっている
次に、flashをロードするとドキュメントクラスというものがStageの下に追加される
ドキュメントクラスはflashで一番最初に読み込まれる場所のことで、タイムラインで作っているなら、メインタイムラインがドキュメントクラス
ドキュメントクラスを自分で指定してクラスベースで作っているなら、そのクラスがドキュメントクラスとしてStageの下に追加される

そんで>>733の説明順に配置していくとこうなる

1. Stage-----ドキュメントクラス(メインタイムライン)-----hogeA

2. Stage-----ドキュメントクラス(メインタイムライン)-----hogeA
736Now_loading...774KB:2009/03/31(火) 17:42:08 ID:YhbgJsaq
おっと途中送信w

1. Stage-----ドキュメントクラス(メインタイムライン)-----hogeA

2. Stage-----ドキュメントクラス(メインタイムライン)-----hogeA
                               |
                               -----hogeB

3. Stage-----ドキュメントクラス(メインタイムライン)-----hogeA
     |                           |
     -----hogeC                   -----hogeB


こんなツリー構造になってる
で、この状態から、各表示オブジェクトからrootとやるとどこを示すのかってのが問題なんだが、
Stage以下からrootとやると、Stageを示すが、ドキュメントクラス以下からrootとやるとドキュメントクラスを示すことになってる
その状態で、MovieClip(root).hogeAとすると、StageはMovieClipにできないのでエラーがでる
Object(root).hogeAとしてもStage直下にhogeAはないのでエラーがでる

なので、hogeCをドキュメントクラス以下に置くか、stage.getChildAt(0)とかでドキュメントクラスの参照をとってくるとかすればいけると思う
737Now_loading...774KB:2009/03/31(火) 20:17:23 ID:IETs056I
AS2では_rootはムービークリップだからね
738Now_loading...774KB:2009/03/31(火) 22:37:46 ID:ga3JpuEz
3.0です。
下記のように引数を関数に渡しているイベントが
removeEventListenerで削除できません。
なにか良い方法はないでしょうか?

//イベント追加
for(var i=0;i<4;i++){
  moveBtn[i].addEventListener(MouseEvent.ROLL_OVER,directOver(i));
  moveBtn[i].addEventListener(MouseEvent.ROLL_OUT,directOut);
}
function directOver(myNum:Number){
  return function(evt:MouseEvent){
    evt.target.parent.gotoAndStop(myNum+2);
  }
}
function directOut(evt:MouseEvent){
  evt.target.parent.gotoAndStop(1);
}
//イベント削除
for(var i=0;i<4;i++){
  //↓引数を渡したイベントは削除できてない
  moveBtn[i].removeEventListener(MouseEvent.ROLL_OVER,directOver(i));
  //↓このイベントは削除できてる
  moveBtn[i].removeEventListener(MouseEvent.ROLL_OUT,directOut);
}

よろしくお願いします
739Now_loading...774KB:2009/03/31(火) 23:01:21 ID:Pxi6KfJ3
>>736
うへー、なるほど、よくわかりました。ありがとうございますー
Stage=メインタイムラインだと思ってました…っ
もう頻繁に「そいつは見つからん」とか言われてドコーって感じだったんですが、そういうことだったのですねえ
740Now_loading...774KB:2009/04/01(水) 00:38:19 ID:ymbm7Z+M
AS3.0,WinXP-Pro,FlashCS3です。
>>733さんの質問に関連してるかも知れませんが)AS3.0でのプロパティ参照で質問です。

Stage上にMC(Slider,インスタンス名:sliderR)を置いて、この子のMC(Grip,インスタンス名:grip)
を配置しました。ライブラリのGripにはASファイル:Grip_01.asが関連付けされています。

プレビューしてRootのタイムラインからGrip_01の変数colorVal(var colorVal:uint=255;)を sliderR.grip.colorVal
で参照しようとしたところ、
 #1069: Grip_01 にプロパティ colorVal が見つからず、デフォルト値もありません。

というエラーが出ました。これは sliderR.getChildByName("grip").colorVal としても同じでした。
そこで、colorVal をオーサリング画面のシンボル定義(Gripのタイムライン)で再定義したところ、この
エラーは消えました。

ASファイルでの定義とタイムラインでの定義では変数の認識の仕方が違うのでしょうか?
(タイムラインの方が優先でしょうか?)

よろしく願います。
741731:2009/04/01(水) 01:17:47 ID:8gKFgV+C
どのswfから再生しても動くという条件なので親swfが使えないんです

理屈的にはこの方法で次のムービーへ変数が渡せそうなんですが
_level0にある変数が送られるという認識でしたが
GETメソッドの使い方が間違っているんでしょうか?
742Now_loading...774KB:2009/04/01(水) 01:50:49 ID:/u/NfTny
>>741
どのswfからでも再生する設計を変更はできないのかな。
とにかく、loadMovieした時点で_level0にある変数はクリアされるから
今の方法じゃ無理じゃね?
クエリーつければ渡せたと思うが、そのへんうろ覚えなんで間違ってたらすまん。
あるいは、_globalに定義すればいけたかな?
そうでなきゃ、_level1に読み込みして_level0に変数保持するとか、
現在のフレーム情報を保持するためのクラスを作るとか。
あとね、AS2.0ならMovieClipLoader使うのが吉。
743731:2009/04/01(水) 03:24:39 ID:8gKFgV+C
GETメソッドはURLに追加で書き込めるのでロードムービー側で

this.loadMovie("2.swf?frame="+_level0.frame);

にしてみて2.swfの1フレーム目のスクリプトを

this.gotoAndPlay(_level0.frame);
disp.text = _level0.frame;

に書きかえて disp というTEXTを画面に貼ってみましたところ
渡したい現在のフレーム番号自体は次のムービーで表示されていました
となると

this.gotoAndPlay(_level0.frame);

がうまく動いてないということなのでしょうか?
Flashは5以来のアップデートなのでMovieClipLoaderについては
ちょっとググって勉強してきます
744Now_loading...774KB:2009/04/01(水) 04:25:34 ID:ufPqJl5o
flvを画面いっぱいに表示して縦横比を維持したままリサイズできるように
したいのですが、stageを参照しようとすると未定義のプロパティstageへのアクセスです。
とエラーになります。どうしてもわからないのでアドバイスください。
よろしくお願いします。

private function initStream():void {
_netStream = new NetStream(_connection);
_movieObj = new Video();

var customClient:Object = new Object();
_netStream.client = customClient;

_movieContainer.addChildAt(_movieObj,20);

_movieObj.x = 0;
_movieObj.y = 0;
_movieObj.width = stage.stageWidth / 2;
_movieObj.height = stage.stageHeight / 2;
_movieObj.attachNetStream(_netStream);

_netStream.play(_movieURL);
_netStream.addEventListener(NetStatusEvent.NET_STATUS , onMovieProgress);

if ( _waitForComplete ) {
return;
}
executeComplete();
}
745Now_loading...774KB:2009/04/01(水) 04:41:19 ID:/u/NfTny
>>743
1フレーム目にthis.gotoAndPlay(_level0.frame)を書いたところで、
読み込みが完了していなければ、移動は出来ない。
だから、MovieClipLoaderを使って読み込み完了を確認し
onLoadInitあたりで、飛ばしたいフレームへのgotoアクションを
設定しておく。
746731:2009/04/01(水) 06:21:35 ID:8gKFgV+C
ググってみたのですがMovieClipLoaderで自分自身を消して置き換えるようなswfを作れるか
今一わからなかったのでちょっと泥臭いですが
ムービーの1フレーム目を空白にしてそこに

loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
if ( loaded < total ) {
 _root.gotoAndPlay ( _root._currentframe - 1 );
}else{
 _root.gotoAndPlay ( _level0.frame );
}

と書き、なぜか2フレーム目に飛ぶときがあったので2フレーム目にも
_root.gotoAndPlay ( _level0.frame );
と書いたところ思っていた動作になりました
あまり納得がいかないソースになりましたがとりあえずこれで
暫く使ってみようと思います
747Now_loading...774KB:2009/04/01(水) 14:21:30 ID:m+DDdjkw
WinXP-Pro,FlashCS3-Pro(Player9.0,AS3.0)

AS2.0の色取得関数getRGB()の機能をAS3.0のColorTransformクラスで再現しようと
していますが上手くいきません。

ttp://www.adobe.us/livedocs/flex/2_jp/langref/migration.html によると、「RGB カラー値
には ColorTransform クラスの color アクセサプロパティを使用してアクセスできます」
とのことなので、MC(canvas1←色の変更が随時可能。最初は黒)のカラー値を取得するため、
下記のようにしました。
var getColor:ColorTransform = new ColorTransform(canvas1);
canvas1.buttonMode=true;
canvas1.addEventListener (MouseEvent.CLICK, canvas1_click, false, 0, true);//クリックして色を取得
function canvas1_click (mouseEvt:MouseEvent) {
trace ("カラー値: "+getColor.color);
}

これだとエラーは出ず初期設定の0(黒)が出るのですが、canvas1の色を変えても0のままです。
どうすべきでしょうか?
748Now_loading...774KB:2009/04/01(水) 14:55:53 ID:jLvz8uHB
AS3 駆け出しの初心者です。
addChildでステージ上に貼り付けたMCって、
以下の記述だと、どういうパスになるんですか。


for(var i:Number=0;i<5;i++){
var objBase:MovieClip = new objBase();
testStage.addChild(objBase);
}
749Now_loading...774KB:2009/04/01(水) 15:06:13 ID:08/6w+7D
>>748
試しにtrace (this.parent); をやってみたら?
750Now_loading...774KB:2009/04/01(水) 15:11:50 ID:jLvz8uHB
>>749

[object MovieClip]
ってでてきます。
さっぱりです。
751Now_loading...774KB:2009/04/01(水) 15:18:21 ID:jLvz8uHB
念のため、ソースも出しておきます。


for(var i:Number=0;i<5;i++){
var objBase:MovieClip = new ObjBase();
with(objBase){
name="objBase"+(i+1);
}
stageMC.addChild(objBase);
trace ("1: "+objBase.parent.name);
trace ("2: "+stageMC.objBase1);
}


出力結果が、
1:stageMC
2:undefined
752Now_loading...774KB:2009/04/01(水) 15:28:33 ID:HnOWt+G8
>>747
var getColor:ColorTransform = new ColorTransform(canvas1);
これもfunctionの中に入れないとだめなんじゃね?

>>751
パスってどういう意味?
753Now_loading...774KB:2009/04/01(水) 15:30:16 ID:9lqsWgF3
>>751
trace ("3: "+stageMC.objBase); これは?
754Now_loading...774KB:2009/04/01(水) 15:43:12 ID:jLvz8uHB
>>753

undefinedになっちゃいます…。なぜ…?

>>752
要は、アタッチムービーみたいな感覚で、
ステージにアタッチしたムービークリップを
別のファンクションとかから呼び出したいんですけど、
そのときのパスとかインスタンス名をしりたいんです。
755Now_loading...774KB:2009/04/01(水) 15:59:04 ID:HnOWt+G8
>>754
nameを変数名のように使ってるのが間違いじゃないか?
まずobjBase.parentを変数に入れてその変数からgetChildByNameで呼び出せばいいんじゃないかな

var parentMC:DisplayObjectContainer = objBase.parent;
parentMC.getChildByName("objBase1");

こんな感じ?試してないからできるかわかんないけど
756Now_loading...774KB:2009/04/01(水) 16:14:48 ID:sWVEN/Ky
>748 ObjBase.as内にtrace(this);でいいじゃないか
757Now_loading...774KB:2009/04/01(水) 16:37:29 ID:jLvz8uHB
>756さん
[object objBase]
ってトレースされます。

もういちど言うと、もうしわけないですがAS3が全くの初心者です(汗)
普通AS2でトレースすると、
確か_level0.testMC.testMC2 見たいな感じで出力されましたよね。
それで、どこからでも_level0.testMC.testMC2._alpha=30;
とかで、プロパティなどさわれた。

やりたいことは、簡潔に言うと、
for(var i:Number=0;i<5;i++){
var objBase:MovieClip = new ObjBase();
stageMC.addChild(objBase);
}
で、

stageMCの中にムービークリップを5つ作って、

その一つ一つのムービークリップにアクセスして
xやらalphaやらtextなどをそれぞれ操作したいのですが…。

なにか、参考になるサイトでもかまいませんので、
おしえてくだされば幸いです。m(_ _)m

758Now_loading...774KB:2009/04/01(水) 16:39:46 ID:HnOWt+G8
>>757
それはムービークリップを配列に入れて操作するのがいいと思うよ
759747:2009/04/01(水) 16:45:58 ID:dQGDXDfx
>>752
どうも。関数内に入れましたが変化無しです。
試しに、適当な色(紫)の別のMCに対して色の取得を試みましたが、
これも0でした。

そこで、traceのところを trace ("カラー値: "+getColor.toString()+", "+getColor.color);
としたところ、
カラー値: (redMultiplier=NaN, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1,
redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0), 0

のようになり、赤の乗数がNaNになっています。
これがカラー値=0の背景としたら何が原因になるのでしょうか?

すみませんが、よろしく願います。
760Now_loading...774KB:2009/04/01(水) 16:48:07 ID:jLvz8uHB
>758さん

ほんまありがとうございました(^^ )
助かりました〜〜(TeT)
761Now_loading...774KB:2009/04/02(木) 00:08:34 ID:vsjscY7K
>>740
どなたかお願いしまふ。
762Now_loading...774KB:2009/04/02(木) 05:03:57 ID:Z8LX5nLD
すみません、質問です。
AcrtionScript3.0で、ライブラリ内の画像データをBitmapDataに読み込みたいんですが
いい方法ないですか?
BitmapData.loadBitmap()は使えないですし、Loaderで読み込んだりできるんでしょうか?
よろしくお願いします。
763Now_loading...774KB:2009/04/02(木) 05:17:52 ID:ftY630u+
>>761
頑張って書いたんだから >>735-736 を見てくれよw

>>762
画像データをBitmapDataを基本クラスとして任意の名前でリンケージする
例えば名前をTestDataとすると
var bmd:BitmapData = new TestData(0,0);
でBitmapDataを読み込むことができる はず
764Now_loading...774KB:2009/04/02(木) 05:20:05 ID:yNkg1PdS
>>762
(検証してないけど)ライブラリのリンケージで flash.display.BitmapData として
var bmd:BitmapData = new BitmapData();
var bm:Bitmap = new Bitmap();
を使うのは?
詳細は、「ActionScript 3.0 逆引きクイックリファレンス」(毎日コミュニケーションズ)のp244
765762:2009/04/02(木) 05:24:41 ID:Z8LX5nLD
>>763様, 764様
すみません、こんな時間なのに即答ありがとうございます。
出来ました!
本当にありがとうございます。
766Now_loading...774KB:2009/04/02(木) 14:03:25 ID:V1VQrB2Y
http://lick_a.at.infoseek.co.jp/hinabat/みたいに
一つの文字列から複数の数値を得るには一体どうすれば・・・
767Now_loading...774KB:2009/04/02(木) 14:07:38 ID:V1VQrB2Y
細かく書くと
例:「やらないか」って文字列から
攻撃力100,守備力300,運40って値を得たい
逆に攻撃力100守備力300運40から「やらないか」って文字列を得る方法があれば是非
768Now_loading...774KB:2009/04/02(木) 16:24:18 ID:yT1vmpaj
>>767
switch〜case じゃダメなの?
769Now_loading...774KB:2009/04/02(木) 16:35:53 ID:V1TfcAy7
>>767
どんなゲーム作ってんだよw
770Now_loading...774KB:2009/04/02(木) 17:14:39 ID:r1M/q4X5
ASCIIコードだかに分解して数値適当に計算すればいいんじゃね
771Now_loading...774KB:2009/04/02(木) 22:35:17 ID:V1VQrB2Y
別に「やらないか」じゃなくても文字列は
000Vy1hpuU5Qs01wOls01wQ6s01zvLs01yrNhpI8kb6pRmBL2019s7p01hx0jpRuWwp01gaiq01nF8q01dbP205ycyepRmSbr018CLr0187J9pi8sripuTOt5p9FYg
みたいのでも全然OK。てか↑は何?

>>769
攻撃力=いちもつの長さ 的なゲーム
772Now_loading...774KB:2009/04/02(木) 23:41:58 ID:GJ5xKjmZ
FlashCS3,WinXPでAS3.0です。
MCにグラデーションが現れません。

インスタンス名がareaMというMC(最初は灰色のみ)をステージに配置して、これをクリック
するとグラデーションになるようにクリック関数内で下のようにしました。
//grObjはareaMのタイムラインで宣言
lineGrad_colorArr[0]=0x0008080;
lineGrad_colorArr[1]=0x0808080;
areaM.grObj.beginGradientFill (GradientType.LINEAR, lineGrad_colorArr, [1, 1], [0, 255]);
areaM.grObj.endFill ();
trace ("grad= " +lineGrad_colorArr);//grad= 32896,8421504 になります

この場合、エラーは出ないのですが何も変化しません。
問題点はどこでしょうか?
773Now_loading...774KB:2009/04/03(金) 06:03:58 ID:ARbFsdcJ
>>772
clear() してない

draw***() してない

beginGradientFill() で Matrix を指定してない

そもそも Graphics による描画は一度描画した内容を変更するものではない

areaM.grObj じゃなくて areaM.graphics だろ
これがエラーにならないのはクリックも失敗してるんじゃないのか

774Now_loading...774KB:2009/04/03(金) 11:25:02 ID:7kS2dNmb
>>773
レス有難うございます。
う〜ん、traceは出ているのでクリック自体は問題無いと思いますが・・・

取りあえず、手元の本に線を組み合わせてMCにグラデーションを描く
方法が載っていましたのでこれで試してみます。
775Now_loading...774KB:2009/04/03(金) 11:43:32 ID:YR4inqBn
beginGradientFillって
Matrixがnullでもコンパイラとおるけど
表示位置がデフォルトだとどこいくんだろ
まったく表示されないんだっけ
776Now_loading...774KB:2009/04/03(金) 11:44:20 ID:YR4inqBn
ていうか、drawしてないんだから何も表示されないのは当たり前かそれ
777Now_loading...774KB:2009/04/04(土) 00:55:17 ID:Udb7ntQL
ActionScript3
Listコンポーネントのシマシマを消すには?
「as3 list シマシマ」でググってもわかりません><
778Now_loading...774KB:2009/04/04(土) 06:43:51 ID:Ejcbjt+K
AS2です。
movieClip1,movieClip2,movieClip3にそれぞれ画像を読み込ませて、
全部の読み込みが完了したらrootのフレームを次ぎに進ませたいと思っています
そこで、すべてのmcインスタンスにmcアクションとして以下を記述しました

onClipEvent(onLoad){
this.loadMovie("hoge1.jpg");
}
onClipEvent(onData){
_root.loadNum++;
if(_root.loadNum == 3){//_root.loadNumの初期値は0
_root.gotoAndStop(2);
}
}

もっと効率的なやり方がないでしょうか?
779Now_loading...774KB:2009/04/04(土) 09:41:40 ID:HkpzKJgn
十分じゃない?
if (_root.loadNum++&&_root.loadNum==3) _root.gotoAndStop(2);
って一行にも一応纏められる(ハズ)
780Now_loading...774KB:2009/04/04(土) 11:14:33 ID:UJfrr1jA
>>778
効率的かどうかはわからんが、MovieClipLoader使う方が適切だとは思う
781Now_loading...774KB:2009/04/04(土) 13:03:44 ID:Ejcbjt+K
>>779-780
ありがとうございます、おかげですっきりしました

別の質問なのですが、スロットマシーンを作るとして1リールに絵柄が10種類あり
そのリールが3つあるとします。この状況で、絵柄を外部ファイルから読み込むとき
全体としてloadMovieは30回やらなければいけないのでしょうか?
リールごとの絵柄の並びは全く別という前提で教えてください。
種類は10種類なので一度読み込んだら再利用したいんですが「画像を読み込んだ状態での
MCのduplicateは無理」なので30回かなぁと思っています
間違っているでしょうか。もしくは賢いやり方があるでしょうか。。AS2で回答お願いします。
782Now_loading...774KB:2009/04/04(土) 22:52:59 ID:hf0+/JiJ
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0)

昨年の12/30に、外部テキストを読み込み時のメモリ消費を抑える方法としてURLStreamを使う
方法を前スレで教えてもらい実行したのですがエラーも何も出ません。
(すいません、3ヶ月以上も間が空いてしまいました)

元のASは、>>923 914 sage 2008/12/30(火) 14:34:09 ID:boG7lgXO さんからのもので、
Flaファイル,読み取り対象(テスト用)Txt,Upローダーサイズ調整用JPGと共にZipにしています。
http://uproda11.2ch-library.com/11169661.zip.shtml

今回は、試しに文章中にある句読点(。)がある場合にtraceするようにしていますが、
何も出ません(特に細工した部分は無いのですが・・・)
アドバイスを願います。
783Now_loading...774KB:2009/04/04(土) 23:12:08 ID:c5JwKfkc
zip丸投げはどうかと
ごめん、余計なお世話だったね
任せた>all
784Now_loading...774KB:2009/04/04(土) 23:39:03 ID:hf0+/JiJ
>>783
私自身も悩んだのですが、どういう状況なのかを把握して頂きたく
まとめてUpしました。

でもFlaファイルまでは要りませんね(反省
785Now_loading...774KB:2009/04/05(日) 01:12:45 ID:kppphfPQ
AS2でアイテムの整理を配列でやってんだけど
所持リストが
ItemList=[剣,槍,なし,なし,なし](←は5個だけど100個まで所持できる設定)で
例えば新しくアイテム「盾」を入手した場合、前から数えて最初の「なし」
ItemList=[剣,槍,盾,なし,なし]ってしたいのと
「槍」を売っぱらうなり捨てるなりしたとき
ItemList=[剣,盾,なし,なし,なし]ってしたいのですが、どうすればいいですか?
日本語下手ですいません。
786Now_loading...774KB:2009/04/05(日) 01:35:49 ID:49OnJYan
>>785
「なし」は定義しないで、
pushとspliceで追加削除すればいいんでね?
787Now_loading...774KB:2009/04/05(日) 02:10:30 ID:j/SN2HKQ
あるいはfor文とifで回して
n番目が「なし」だったら置き換えてbreak
とかかな
788Now_loading...774KB:2009/04/05(日) 02:15:40 ID:1+NR+uK0
>>785
AS2わからないからAS3で申し訳ないんだけど、多分同じだと思うから
array.splice(A, B, C); // A番目から、要素をB個削除し、CをA番目に追加する
ってのがすごい便利。

new array:Array = ["剣", "槍", "槌", "弓"];
って配列があるとして、たとえば要素2:"槌"を消したいだけなら
array.splice(2, 1); // 要素2から1個削除する
ってしてやると、中身は["剣", "槍", "弓"]になる。

上の場合で、槍と槌の2つを同時に消したいなら、
array.splice(1, 2); // 要素1から2個削除する
ってやると["剣", "弓"]になる。

逆に、消すのではなく槍と槌の間に"弩"を入れたいなら、
array.splice(2, 0, "弩"); // 要素2から0個削除(=削除しない)し、その場所に"弩"を挿入する
ってやると["剣", "槍", "弩", "槌", "弓"]になる。
789Now_loading...774KB:2009/04/05(日) 07:18:06 ID:8eClZp9/
Win Fla8 AS1.0です

○×判定の問題がでるゲームを作ってます。
配列に入っている20個の数字(問題番号)をランダムに重複なく10個にならべかえたいのですが
方法がわかりません。
それらしきサイトをみてみましたが技術不足で理解できませんでした。

そこで、むりやりタイムラインに

for (i=1; i == 《タイムラインごとにここをどんどん増やしていく》; i++) {
  var rand = Math.floor(Math.random()*20+1);
  //重複が過去の配列とないか判定して、なければ代入する
  if (ques[i] != rand) {
  《問題を表示するASをここに書く》
  //問題を配列にして順番に番号を入れていく
  ques[2《現在の問題を配列に代入》] = rand;
  trace("rand"+rand);
  trace("ques"+ques[2]);
}
}

この方法でやると、次の問題にすすまなかったり、ASが無限ループを
起こしてしまいます。
なにかいい方法はないでしょうか。
できれば前者の20個の数字を10個の配列に重複なく入れるスクリプトを書きたいです。

よろしくお願いします。
790Now_loading...774KB:2009/04/05(日) 07:26:36 ID:8eClZp9/
追記です
タイムラインに20個の問題表示箇所をつくり、
ひとつずつ進んでいくようにしています。
《問題を表示するASをここに書く》
のMCで正解・不正解を表示させた後
_root.gotoAndStop(_root._currentframe+1);
で次のフレームに飛ばしてます。
791Now_loading...774KB:2009/04/05(日) 08:06:29 ID:xAurfx3d
>>789
シャッフル汁
792Now_loading...774KB:2009/04/05(日) 10:07:31 ID:Bo4pCHKK
>>785
>>788に加えて、最初の「なし」または「盾」を検索するならindexOfが使えるはず
手元にAS3のリファレンスしかないからAS2はググってくれ

793789:2009/04/05(日) 13:22:55 ID:8eClZp9/
>>791
ありがとうございます。
シャッフルという言葉は思いつかなかったですね。
いい参考サイトみつけられました。
794Now_loading...774KB:2009/04/05(日) 14:43:48 ID:kppphfPQ
>>792
きゃーどうも

indexOfは文字列だけじゃなかったっけな
795Now_loading...774KB:2009/04/05(日) 19:46:17 ID:1smZhX4l
timezoneOffsetの使い方教えて。
796Now_loading...774KB:2009/04/06(月) 15:19:19 ID:DeZ9pfZq
flashでlightboxを設置できる方法をおしえてください。

ttp://youmos.com/reference/lightboxflash.html
とか
ttp://d.hatena.ne.jp/minorio/20080927/1222513402
をみているんですが、全くしっかり動いてくれません。
797Now_loading...774KB:2009/04/06(月) 18:30:35 ID:fa9wJGkl
ブラウザのDOMの実装のバグじゃない。
798Now_loading...774KB:2009/04/06(月) 18:39:17 ID:fa9wJGkl
http://www.koikikukan.com/archives/2006/03/17-021717.php

とりあえず役立ちそうな情報あった。
799Now_loading...774KB:2009/04/07(火) 05:30:40 ID:vcTrlan4
AS2、flash8です
外部テキストの読み込みについて教えてください
・外部テキストの変数と値を_rootに読み込ませるとき、全ての変数を完全に読み込んだと
判別する方法はあるでしょうか?
(Movieclipに読み込ませて onDataするしかないですか?)
・読み込むデータが量が多いとき、_rootに読み込み完了前に次のフレームに進んでしまうことは
あるでしょうか。
 その場合、それを防ぐ方法を教えてください
800Now_loading...774KB:2009/04/07(火) 11:49:57 ID:UeevZHKT
>>799
LoadVarsを使うべき
801Now_loading...774KB:2009/04/07(火) 15:25:06 ID:PtJG27gr
acs3でロゴタイプのアニメーションを考えています。
一筆書きのような感じをアニメーションで表現したいんですが、
直線ならまだしも、曲線で構成されたモノを描く場合、どのような
やり方が考えられるでしょうか。
linto(x,y)を少しずつ繰り返して行く感じでしょうか。。
ちなみに元のロゴタイプはjpgの画像でしか存在しません。
802Now_loading...774KB:2009/04/07(火) 18:31:50 ID:G3OSo4Wh
スクリプト使わなくても消し込みで表現できる
803Now_loading...774KB:2009/04/07(火) 18:41:14 ID:ug8kqpdk
>>802
PCへの負荷はどうだろ?
ASの方が軽い気がする(まあ、本人の意向次第だけどw)
804Now_loading...774KB:2009/04/07(火) 18:48:50 ID:PtJG27gr
おーありがとう。消し込みでやってみます。
805Now_loading...774KB:2009/04/08(水) 21:27:19 ID:T+aTrUe4
質問です。
現在時刻をUTCで
1970年1月1日0時(世界時) からのミリ秒数を返す方法を教えてください。
806Now_loading...774KB:2009/04/08(水) 23:09:18 ID:PaRzhVhe
リファレンスみろカスが
807Now_loading...774KB:2009/04/08(水) 23:55:52 ID:+5I2j0/g
ホイッ
808Now_loading...774KB:2009/04/09(木) 09:21:08 ID:A2UpoZui
>>806
クソがシバクゾ。
ここは質問の場だろ教えてやれよ。
だからハヤ(メ・ん・)年だよ。ASは・・
809Now_loading...774KB:2009/04/09(木) 09:55:42 ID:+N42Zv5Q
>>808
ひんと jsとasはほとんど同じ
810Now_loading...774KB:2009/04/09(木) 10:06:53 ID:Mnc3h5UM
2はな
811Now_loading...774KB:2009/04/09(木) 10:14:46 ID:uR5SaKQ0
そもそも、ASの需要がそんなないから流行んないんだよ。
今時、企業サイトなんてみんなCMSなどのPHPとの連携がほとんど
さらにSEOを考えると全面フラッシュというのは選択肢として
なくなってくる。しかもJavaScriptのDOM互換性の問題も
高機能なライブラリの登場でクリアされて、例えばスライドなんかも
ここまで出来るとなると、いよいよFlash使いどころに困るというか
わざわざXMLから情報抜き出してFlashにするのめんどくさ
http://www.serie3.info/s3slider/demonstration.html
812Now_loading...774KB:2009/04/09(木) 10:16:58 ID:Fg47oFDV
as3です
mcAがgoalAに等速運動で移動しています
たまに通過しても処理されない場合があります
fps20で他にmcはありません。何が原因なのでしょうか?

//移動前と移動後の差分の積が負になれば通過
oldX=goalA.x-mcA.x
mcA.x+=10;
if(oldX*goalA.x-mcA.x < 0 ){trace("通過");}

こんなのよりも、他にもっと良い方法があれば教えてください
よろしくお願いします
813Now_loading...774KB:2009/04/09(木) 10:39:58 ID:Fg47oFDV
。。
814Now_loading...774KB:2009/04/09(木) 10:41:25 ID:Fg47oFDV
>>812
>if(oldX*goalA.x-mcA.x < 0 )
if(oldX*(goalA.x-mcA.x) < 0 )
括弧忘れてました

>>813
誤信です、すいません
815Now_loading...774KB:2009/04/09(木) 10:53:53 ID:Mnc3h5UM
if(goalA.x<mcA.x) じゃ何か問題があるのか?
816Now_loading...774KB:2009/04/09(木) 10:59:25 ID:Fg47oFDV
>>815
書き方が悪かった、ごめん
>mcA.x+=10;
mcA.x+=vx;//vxは正と負どちらでも

もちっと考えてみます。質問とりさげで、お騒がせしました。
817Now_loading...774KB:2009/04/09(木) 11:01:35 ID:+N42Zv5Q
適当コード書く前にflaうp
818Now_loading...774KB:2009/04/09(木) 15:03:45 ID:tZ2SgMVV
>>812
距離計算じゃなくてhitTestObject()じゃだめなん?
819Now_loading...774KB:2009/04/09(木) 15:06:28 ID:Fg47oFDV
AS3 + Flash CS3 + FlashDevelop3
猫と犬が追いかけっこしてます
hitTestObject();
を実行したいのですが、パスをどう書けばいいのかわかりません
ファイル構成:nyanwan.fla,Main.as,DogCtrl,CatCtrl

◆nyanwan.fla
ムービークリップライブラリでリンケージ設定
dog
cat

◆Main.as:nyanwan.flaのドキュメントクラス
var dogContainer:DogCtrl=new DogCtrl();addChild(dogContainer);
var catContainer:CatCtrl=new CatCtrl():addChild(catContainer);

◆DogCtrl.as
//コンストラクタ
mc=new dog();
addChild(mc);
addEventListener(Event.ENTER_FRAME,paku);
function paku(event:Event):void{
mc.hitTestObject(★);//ここで猫を指定するにはどう書くんでしょうか?
}

◆CatCtrl.as
//コンストラクタ
mc=new cat();
addChild(mc);
820812:2009/04/09(木) 15:11:00 ID:Fg47oFDV
>>818
812は座標だけの処理になりそうなんでちょっと保留になりました
821Now_loading...774KB:2009/04/09(木) 15:40:40 ID:2P3xLSbC
ステージ上のmyBaseにmyLoadというMCを突っ込んでそこに写真を読み込んで表示させたいのですが
XMLでパスを読み取る所までは成功しているのですが、写真が表示されません。
というか、プレビューとかswfをプレイヤーで単体で再生の時には写真が表示されるのに
HTML上に読み込んで再生させようとするとmyBaseのMCだけが見える状態で、写真が読み込まれません
どなたかお知恵をお貸しいただけないでしょうか・・・・。環境は WINXP + FLASH8 +AS2です
var myXML = new XML();
myXML.ignoreWhite = true;//空白、改行無視
myXML.load("./photodata.xml"); //xmlのロード

myXML.onLoad = function(loaded){
if(loaded){
var rootNode = myXML.firstChild; //全てのデータ内容
var pictureCnt = rootNode.childNodes.length;
var currentPicture = rootNode.firstChild;

for(i =0; i<pictureCnt ; i++){
var pictureUrl = currentPicture.firstChild.nodeValue;
var currentPicture = currentPicture.nextSibling;
f_makeAndLoad(i,pictureUrl);
}
}else{
trace("error occured");
}
}
function f_makeAndLoad(num,path){ //写真読み込み
myBase.myLoad.duplicateMovieClip("myLoad"+num,num+1); //myLoad複製
v_name = eval("myBase.myLoad"+num);
v_name._x = 0;
v_name._y = 0;
v_name.loadMovie(path);
myBase.myLoad._visible = false;
}
822Now_loading...774KB:2009/04/09(木) 15:57:18 ID:Nvwbw7HY
全然内容読んでないけどローカルでできるなら
読み込み待ち処理をちゃんと作っていないんだろ
823Now_loading...774KB:2009/04/09(木) 15:58:56 ID:2P3xLSbC
>>822
おおお!!
なるほど!それだ!
ありがとうございます。

ちなみにもしよかったらどういう方法があるか
少しご指導いただけませんか><
824Now_loading...774KB:2009/04/09(木) 16:23:50 ID:FlREQNGr
>>823
自分も全然読んでないけど、
ローカルのHTML上でも成功しないなら
外部ファイルのパスの起点が違う
825Now_loading...774KB:2009/04/09(木) 17:14:39 ID:2P3xLSbC
う〜ん・・・何度もすみません。
やっぱり上手くいかないもので・・・。
例えばこのサイトの(http://www.thinkit.co.jp/article/83/3/2.html)
http://www.thinkit.co.jp/images/article/83/3/8331.zipここから
私の作った物とほぼ同じ仕組みのスライドショーをダウンロードしてHTMLに貼り付けてみても
やはり画像の読み込みが行われません・・・。
ちなみにHTMLに貼り付ける構文は
<embed src="./slideShow/8331/slideShow_comp.swf"application/x-shockwave-flash" width="804px" height="452px" pluginspage="http://www.adobe.com/go/getflashplayer_jp"/>
としているんですが、何がおかしいのでしょうか・・・。
もちろんローカルでも再生されないです・・・。
ただフラッシュプレイヤーでは再生可能です。
826Now_loading...774KB:2009/04/09(木) 17:26:28 ID:RvrcnzJv
現在、softbankのモバイルウィジェットを作成中なんですが、
Flash側から端末の情報(今回は歩数計の歩数)を取得したいと思っています。
Flash起動時にパラメータでその時点の歩数は渡せるのですが、起動後に常に
情報を取得したいのです。

SetVariableで渡そうかと思ったのですが、どうやらモバイルウィジェットでは
サポートしていないのでプリファレンスデータ経由で渡せるのかな?と思っています。

ただ取得できた値がどうやってactionscript側の変数にセットするのかが分かりません。
そもそも、こういうことは出来ないのでしょうか?
827Now_loading...774KB:2009/04/09(木) 17:30:04 ID:FlREQNGr
>>825
そのflaからHTML書き出せば普通に読み込むけど?
つか、外部ファイルのパスの起点が違う可能性がある、ってかいたけど
そのへん、実際はどうなの?
HTMLとswf、画像ファイル、xmlファイルのディレクトリ構造はそれぞれどうなってるの?
確認してるブラウザは何?
828Now_loading...774KB:2009/04/09(木) 17:42:16 ID:2P3xLSbC
>>827さん
HTMLの書き出しでやってみたところ、確かにHTMLに埋め込まれた状態での
動作を確認しました!ありがとうございます。
でも、自分のHTML上に貼り付けようとするとやっぱり上手く動かない・・・。
パスの起点については

top.html (これに埋め込みされてる)
と同じフォルダにslideShowフォルダがあって
その中に8331フォルダがあって
さらにその中に本体のslideShow_comp.swfがある状態です。

それでembed src="./slideShow/8331/slideShow_comp.swf"
と指定してHTMLプレビューをするんですけど見えません・・・。

確認してるブラウザはFireFoxとIEです。
どちらも駄目です・・・。
829Now_loading...774KB:2009/04/09(木) 18:01:34 ID:FlREQNGr
>>828
ASの外部ファイルを指定してる箇所で
ブラウザ経由で実行する場合は、HTML(この場合はtop.html)起点のパスを
書く必要があったと思う。
top.htmlをswfと同じディレクトリにおけば多分解決するんじゃね?
830Now_loading...774KB:2009/04/09(木) 18:11:08 ID:2P3xLSbC
>>829
おおおお!!解決しました!!
xmlとswfをtop.htmlと同じフォルダにしたら解決しました〜!
いやー、本当だいぶ悩みました。どうもありがとうございました><

ということは、xmlを使ったスライドショーなんかを作る時には
htmlとswfファイルは常に同じフォルダに置く必要があるって事ですかね?
top.htmlと同じ階層にslideShowフォルダを置いて
その中にswfとxml、photoフォルダを作って整理とかって言う事は不可能なんでしょうか。

ずいぶんお答えいただいたのでこの質問はスルーしていただいてもよろしいです。
ID:FlREQNGrさん、本当にありがとうございました><
831Now_loading...774KB:2009/04/10(金) 02:43:49 ID:W6crVFD2
WinXPでFlashCS3(AS3.0)です。ブラウザはFireFox3.08です。

「ActionScript 3.0 逆引きクイックリファレンス」(毎日コミュニケーションズ)に記載されて
いるフルスクリーン時の解像度向上SWFをブラウザで実行しましたが、下記のエラーが
現れて参ってます(ローカル内で実行しています)。

Error #2044: ハンドルされていない NetStatusEvent : level=error, code=NetStream.Play.StreamNotFound

記載ASは、メインタイムラインのフレームアクションとして以下のようになっています(著作権上、
若干改変しています)
var conectOn:NetConnection = new NetConnection();
conectOn.connect (null);
var netStream:NetStream = new NetStream(conectOn);
netStream.client = new Object();
netStream.play ("VTR.flv");//Flvの指定
var vid:Video = new Video(160, 120);
vid.x = vid.y =80;
vid.smoothing = true;
vid.attachNetStream (netStream);
addChild (vid);
btFull.addEventListener (MouseEvent.CLICK, btFullClickHandler);//ボタンにリスナーを付ける
function btFullClickHandler (evt:Event):void {
if (stage.displayState != StageDisplayState.FULL_SCREEN) {
stage.displayState = StageDisplayState.FULL_SCREEN;//フルスクリーン化
}
}

SWFを単独で起動した場合はエラーは出ずFlvは再生されますが、反面フルスクリーンになりません。
特にサーバーから読み込んでいる訳でなく、同一フォルダ内のFlvでエラーが出ています。
どうすべきでしょうか?
832831:2009/04/10(金) 03:01:10 ID:W6crVFD2
追記:
IE6.0.29で開いた場合はエラーは表示されず、拡大補正も大丈夫でした。
これってやっぱりブラウザに起因しているのでしょうか?
833Now_loading...774KB:2009/04/10(金) 11:25:19 ID:yLA1PSgf
834831:2009/04/10(金) 12:34:05 ID:ZAeo2fLR
>>833
さんきゅう。
てか、「外部FLVファイルを、2バイト文字が含まれないパスに配置してください」
と言われても、同じフォルダなのですが・・・
835Now_loading...774KB:2009/04/10(金) 13:58:43 ID:yLA1PSgf
>>834
いや、だから、FLAとかHTMLとかSWFがあるディレクトリ自体が2バイトだったりするとダメ。
マイドキュメントとかデスクトップとか。
IEだと大丈夫でFireFoxだと不可ってのもイヤな条件だよなぁ。
836Now_loading...774KB:2009/04/10(金) 15:48:42 ID:rmCzvHZB
AS2について質問です。

あるmcの自分自身のインスタンス名から値を引っ張ってきたいのですが、
どう指定していいのかわかりません。

例えば
A001という名前のmcがあったとして、
色のリストになっているxmlからA001の名前があったら、
自身の色を赤に変える、といった処理をしたいのです。

よろしくお願いします。
837Now_loading...774KB:2009/04/10(金) 16:18:04 ID:MheDrGL9
>>836
xmlの中身がどうなってるか、いつ色を変えるかわからんけど
基本動作を書いてみた
mxlList=["B001","C001","A001"];
A001.onMouseDown = function() {
chngColor(this);
};
function chngColor(mc) {
for (i=0; i<mxlList.length; i++) {
if (mxlList[i] == mc._name) {
trace("hit");
}
}
}
838836:2009/04/10(金) 17:10:53 ID:rmCzvHZB
>>837

ありがとうございます!
_nameの存在をすっかり忘れてました。
助かります。
839831:2009/04/10(金) 19:43:14 ID:FN0sgK7d
>>834
なるほど。
FireFoxは曲者ですねw
840Now_loading...774KB:2009/04/11(土) 00:00:34 ID:7RPGiLYj
tweenerやtweenmaxをAS3で使ってトウィーンさせ、そのswfファイルをブラウザで表示させて
その状態でブラウザの閉じるボタンをクリックしたままにするとflashの動きが止まり、ドラッグして閉じるボタン外でマウスを離すと
クリックしたままにしていた間の時間分進んだ様な状態からトウィーンが再開するのですが
そのクリックしたままにしている時間の間にやっている、Spriteを作って並べているのがズレて表示されたり、
トウィーンが変な急激な動きをしたりと、不安定なトウィーン動作を起こしてしまいます
幾つかの企業サイトのflashで同じ事をしても、クリックしていた間は止まりますが、その後の動作は問題無く続いて動いているようです
この問題を解決する方法ってあるのでしょうか?
841Now_loading...774KB:2009/04/11(土) 00:04:58 ID:WkOkYPIO
as3で、xmlでジャンル分けできるphotoGalleryを作っているのですが、
以下のxmlのように複数のキーワードを設けて、それにヒットするもの
だけを表示するようにしたいのですが、文字列操作をしない場合
どのように取り出せばいいのですか?

<data>
<img key="rock,jazz">
<title>あああああ</title>
<url>001.jpg</url>
</img>

<img key="rock">
<title>いいいいいい</title>
<url>002.jpg</url>
</img>

<img key="jazz">
<title>うううううう</title>
<url>003.jpg</url>
</img>

<img key="jazz,classic">
<title>えええええ</title>
<url>004.jpg</url>
</img>
</data>

よろしくお願いします。
842Now_loading...774KB:2009/04/11(土) 02:32:50 ID://A4C4+1
>>841
まず一通り勉強してくれ。 第18回以降にXMLを扱う説明があるよ。
http://itpro.nikkeibp.co.jp/article/COLUMN/20071025/285488/?ST=swd-tech
843Now_loading...774KB:2009/04/12(日) 15:15:32 ID:ScpuME1J
as3です。
マウスを表示オブジェクトからロールアウトしたときに
マウスポインタの下にある表示オブジェクトが何であるかを
知る方法はありますか?
844Now_loading...774KB:2009/04/12(日) 15:28:32 ID:3LE2F5l3
>>843
eventが発生したターゲットを知るにはevent.target
function onOut(event:MouseEvent):void{
trace(event.target.name);
}
ROLL_OUTは対象mc全体を判定
MOUSE_OUTは対象mcのマウス直下のオブジェクトを判定
ここらは大丈夫?
845Now_loading...774KB:2009/04/12(日) 15:35:16 ID:ScpuME1J
>>844
ありがとうございます。そのあたりは大丈夫です。
しかし今回は、ROLL_OUTが発生したターゲットではなく、
たとえばマウスポインタをボタンの外へ移動したときに
マウス直下に何があるかを知りたいのです。
説明が足りなくてすみません。
846Now_loading...774KB:2009/04/12(日) 15:52:45 ID:3LE2F5l3
>>845
そでしたか、失礼
MOUSE_OVERを使う
判定するmcをひとつのMCにまとめる(root.bin.mc1〜mc10)

bin.addEventListener(MouseEvent.MOUSE_OVER,onOver);
function onOver(event:MouseEvent):void {
trace(event.target.name);//mc1〜mc10が返ってくる
}
847Now_loading...774KB:2009/04/12(日) 16:38:29 ID:ScpuME1J
ありがとうございます。
やはり別途ROLL_OVERをつかうしかありませんか。
getObjectsUnderPointでマウスポインタの座標のしたにあるObjectを調べたりも試してみましたが
ボタンからROLL_OUTのタイミングではそのボタンが返ってきてしまうようです。
もう少し考えてみます。
848Now_loading...774KB:2009/04/12(日) 17:11:45 ID:3LE2F5l3
>>847
微妙に食い違ってる気がするけど勘違いか?
ボタンは関係なくて、ボタンの下にあるmc群にMOUSE_OVER
ボタンからROLL_OUT=他のmcがMOUSE_OVERになる

あとはmcを配列にいれて総当たり
var mcList:Array=[ball1,ball2];
btn.addEventListener(MouseEvent.ROLL_OUT,onHitTestObjct);
function onHitTestObjct(event:Event):void {
for(var i:uint=0;i<mcList.length;i++){
if(mcList[i].hitTestPoint(mouseX,mouseY,true)){
trace(mcList[i].name);
}
}
}
849Now_loading...774KB:2009/04/12(日) 17:31:50 ID:kyJGFdiL
rolloutのタイミングじゃなくてgetObjectsUnderPointでそのobjectが存在しなくなったら、にすればいいんじゃないの
850Now_loading...774KB:2009/04/12(日) 18:29:29 ID:3LE2F5l3
座標下と当たるインスタンスをまとめて取得する
ttp://hakuhin.hp.infoseek.co.jp/main/as3/container.html#CONTAINER_09
getObjectsUnderPointって便利だな
でも加工がめんどくさそう?
851Now_loading...774KB:2009/04/12(日) 18:43:28 ID:ScpuME1J
皆さんありがとうございます。
なるほど、getObjectsUnderPointをENTER_FRAMEで繰り返し、
帰ってくるリストの中にボタンがなかったらOK
という感じで行けそうです。
852Now_loading...774KB:2009/04/12(日) 19:37:55 ID:ScpuME1J
あれ、ENTER_FRAMEで回さなくても
判定をROLL_OUTの中でなく別メソッドに書けばできました。
853Now_loading...774KB:2009/04/13(月) 06:45:14 ID:nC2bhEfo
flash8 as2です。現在、外部csvから一行ずつ読み込んで配列に入れる処理をつくっていますが
期待通りに動きません (csvの構造は以下の通りです)
111,aaa
222,bbb
333,ccc

// データを格納する配列 resultAry を作成
var resultAry:Array = new Array();
//一時的に入れる配列
var tempArr:Array = new Array();
// ロード完了時の動作定義(引数:ロードしたデータ)
all_LV.onLoad = function(myData:String) {
// 改行コード区切りで preArr を作成
_root.tmpArr = myData.split("\n").join("").split("\r");
_root.tmpArr[0] = "あいうえお";

_root.resultAry.push(_root.tmpArr);
_root.hoge = _root.preArr[0];
//以下確認用
trace("myData> "+ typeof myData); >booleanを返す
trace("resultArr> "+ typeof resultArr); >undefinedを返す
trace("あいう> "+ typeof "あいう"); >stringを返す
trace("tmpArr> "+ typeof tmpArr); >undefinedを返す
trace("マイデータ> "+_root.myData); >undefinedを返す
trace("resultAry> "+_root.resultAry); >undefinedを返す
}
all_LV.load("load.csv");

上のスクリプトでcsvをresultAryに格納するにはどうしたら良いか教えてください。よろしくお願いします
854Now_loading...774KB:2009/04/13(月) 07:15:00 ID:a5XZoPUH
myDataはエラー出力で、all_LVがデータ内容じゃねーの?
855Now_loading...774KB:2009/04/13(月) 15:00:42 ID:nC2bhEfo
>>854
ありがとうございます 勘違いしてました。


resultAryを二次元配列にしたいんですが
とりあえず、resultAry[0]に別の配列を丸ごと入れたいと思っています
このときの処理は
resutlAry.push(preAry); では駄目なんでしょうか。(preAryの中身は[1,2,3])

最終的には
resultAryの中身を
[[1,2,3],[3,4,5],[6,7,8]]って感じにしたいんですが… どなたかよろしくお願いします
856Now_loading...774KB:2009/04/13(月) 16:26:18 ID:Er07sjpI
>>855
resultAry[i] = new Array();
857Now_loading...774KB:2009/04/13(月) 17:37:03 ID:4CSesGFr
初心者だけど知恵を借りたいです。
マイクで叩く音を拾って、”小さい音”と”大きい音”で違うアクションさせたい。
onEnterFrameでactivityLevelを拾って二つの閾値を
if (mic.activityLevel < 20) { なんもしない }
else if (mic.activity.Level <40) { アクション@ }
else if (mic.activity.Level <100) { アクションA }
みたいにしたんだけど、これだと
音が2フレームにまたがるとアクションがエコーするみたいに連続して起っちゃう
アクションAさせたいときも@が前後のフレームで起っちゃう
って問題があるんだけど、どのような対処法があるでしょうか
858Now_loading...774KB:2009/04/13(月) 18:03:19 ID:W9BB+TdE
onClipEvent (MouseDown) {
_root.attachMovie("aa", "aa", 100);
コレをマウスじゃ無くてzキーを押すと実行されるようにしたいんですが
どうしたらいいんでしょう・・
859Now_loading...774KB:2009/04/13(月) 19:32:13 ID:wrx5ZTDv
ttp://pc12.2ch.net/test/read.cgi/swf/1226284753/l50 よりきました。
[質問]
自動改行がうざくて、condenseWhiteをtrueにしてから、
テキストフィールド(htmlText)に適当な文字列入れたのだが、<br>が改行にならない。
[やりたいこと]
テキストフィールド(htmlText)上で、<br>のみで改行したい。
[開発環境]AS3 FlashCS3 + WindowsXP SP3
[スキル]初めて1週間

偉大な先輩方、お知恵をお貸しください、、、。
860857:2009/04/13(月) 20:47:34 ID:wrx5ZTDv
>>858
下記サンプル試していないので、間違ってたらスマソ。
適宜読み替えてください。

const KEY_Z:Number = 90;
addEventListener( KeybordEvent.KEY_DOWN, Func );

function Func(evt):void {
 if( evt.keyCode == KEY_Z ) { /* 処理 */  }
}

↓参考にするといいかもズラ。
ttp://hakuhin.hp.infoseek.co.jp/main/as3/key_board.html
861Now_loading...774KB:2009/04/13(月) 20:48:25 ID:wrx5ZTDv
>>860の名前間違いです。 857さんごめんなさい。
862Now_loading...774KB:2009/04/13(月) 21:08:17 ID:W9BB+TdE
>>860
ありがとうございます、参考にしてみます。
863859:2009/04/13(月) 21:16:57 ID:wrx5ZTDv
>>859 自己未解決。

condenseWhiteをいじらないで、
1.文字列置換を行い、改行を削除
2.改行を<br>に変換
で対応しました。

チラ裏スマソ。

864Now_loading...774KB:2009/04/13(月) 21:28:47 ID:pfryt6DH
おまいら、質問するときはAS2かAS3かくらい書けよ。
860はAS2では動かないぞ。
865Now_loading...774KB:2009/04/14(火) 05:13:25 ID:pYLG0YIZ
ぐぐれば5分で分かる質問ばっかしだな
866Now_loading...774KB:2009/04/14(火) 11:00:21 ID:a3s4vqRY
XPath4AS2でxmlを読み込んでいるのですが、
たとえばタグ内にhtmlタグがあると、そこで処理がストップされてしまいます。

(例)

<tests>
<test imgSrc="img/01.jpg">これはダミーテキスト</test>
<test imgSrc="img/02.jpg">これは改行を含みたい<br>ダミーテキスト</test>
<test imgSrc="img/03.jpg">これはダミーテキスト</test>
</tests>


3つ目のimgSrcにアクセスできません…。
867Now_loading...774KB:2009/04/14(火) 11:08:53 ID:4plWO2af
それはxml的に正しくないからxml扱うライブラリだと読み取れないんじゃないかな
<br>でなく<br />なら認識できんじゃないかな
868Now_loading...774KB:2009/04/14(火) 11:24:10 ID:a3s4vqRY
いけました!なるほど!
ありがとうございます(^ ^)
869Now_loading...774KB:2009/04/14(火) 17:10:07 ID:XSWlBUT4
なんかレベルの低い質問ばっかりだな
Flashってこんなレベルでも商売になるんだな
凄い世界だ
870Now_loading...774KB:2009/04/14(火) 18:25:49 ID:UFMGAj5q
movieClipに読み込んだ画像を別のムービークリップでも利用したいと思います
MCは画像を含んだ状態で複製できないと思いますが、AS2以降でもやはり無理でしょうか?

あと、外部テキストの読み込みでキャッシュの.txtを取得しないように
hoge.txt?1298などファイル名の最後に乱数をつけたいんですが、そうすると自分の環境では
「外部ファイルを開けませんでした」というエラーが出ます
解決方法があれば教えてください よろしくお願いします
871Now_loading...774KB:2009/04/14(火) 18:48:47 ID:Yksp4EaT
>>870
ビットマップデータ使えば、再利用できるんじゃね?

クエリー付けると、ローカルではエラーが出るが、サーバにあげれば問題ないはず。
872Now_loading...774KB:2009/04/14(火) 19:08:23 ID:pYLG0YIZ
>>869
いやいや、こんなんじゃ採用されないって。
jsやり込んでる層がこっちにも来てくれたらいいのにな。
俺はもうこのスレ来ないわ。
873Now_loading...774KB:2009/04/14(火) 20:38:30 ID:yKoGP6s6
現CS3で仕事を自宅消化したりしているんですけど、
CS4はAS2.0製作に何か恩恵ありますか?
874Now_loading...774KB:2009/04/14(火) 21:18:41 ID:Mp2FaZFS BE:828216656-2BP(2000)
↓のファイルの紫色の●をクリックしても反応しないのは何故でしょうか・・
http://ninjaboyde.gozaru.jp/mov.fla

_rootに置いた、MCに
_root.mc_sikaku.mc_maru.onRelease = function {
trace("クリック成功");
}
と記述すると動くのですが、なぜかクリック成功とは出ずに
●の中に記述したトレースが出力されちゃいますです・・・
875Now_loading...774KB:2009/04/14(火) 22:58:43 ID:ViwFsuDH
CS3でムービープレビューをして
キーボードを押すとショートカットキーが動作してしまって
Flash側でキーのイベントが受け取れないのですが、
これって何か対策がありますか
876Now_loading...774KB:2009/04/14(火) 23:18:09 ID:KOR76D2O
メニューから無効化できる
877Now_loading...774KB:2009/04/14(火) 23:36:11 ID:nKBt5SqH
AS3.0を使っています。
外部からアルファ付のpngファイルを読み込んだloaderオブジェクトで
アルファ付のマスクをかけたいと思っているのですが、うまくいきません。
マスクをかける方(loader)、かけられる方(Sprite)、ともにcacheAsBitmapはtrueにしているのですが
結果は、読み込んだ画像サイズの矩形でマスクがかかるだけです。
どなたか解決策をお教えください。
878Now_loading...774KB:2009/04/14(火) 23:39:14 ID:9+vu37gu
>>874
fla見てないけど、とりあえず
onReleaseはタイムラインに書くもの。
あと、function の後に()が必要。
879Now_loading...774KB:2009/04/14(火) 23:43:03 ID:9+vu37gu
>>877
外部ってのは別サーバー?
880Now_loading...774KB:2009/04/14(火) 23:50:09 ID:nKBt5SqH
877です
>>879
別サーバーではありません。
swfファイルと同じディレクトリにあるpngファイルを読み込んでいます。
881Now_loading...774KB:2009/04/15(水) 00:12:06 ID:gqq7UWwH
877です。
自己解決しました。あまりよろしい方法ではないかもしれませんが・・・
loaderでマスクをかけることはあきらめて、loaderを一旦bitmapにしてから
bitmapでマスクをかければうまくいきました。
loader及びloader.contentでは期待した結果が得られませんでした。
882Now_loading...774KB:2009/04/15(水) 00:47:39 ID:u3K6WSYF
すいません。AS3を勉強はじめました。
いろんな本を読んでみますが、
「カスタムオブジェクト」と「オブジェクト変数」と「ハッシュ」
という概念が同じものをさしているように思うのですが、
ちがうのでしょうか?

よろしくお願いします。
883874:2009/04/15(水) 00:54:57 ID:oW+Q7Hrg BE:966252375-2BP(2000)
>>878
あ、確かにそうすね・・・構文的には間違っているかもなんすけど
あの文章を入れると不思議と動き出す・・・と書きながらわかた
単に■内のMCはエラー起こして動作止まってただけぽいすな・・

んで、■のASはスルーされて中にある●のASが動いたってことか・・・
884Now_loading...774KB:2009/04/15(水) 01:01:29 ID:X6a9CCcU
>>882
ちがう。てか、どれも概念ではないし、概念だとしてもちがう。

カスタムオブジェクト ... 古いASの記述でオブジェクトを独自に拡張させてクラスのように
動かす手段、もしくはそのようにして作成されたオブジェクト。
MovieClipを拡張したmyMcっていうオブジェクトを作ったら、myMcがカスタムオブジェクト。

オブジェクト変数 ... オブジェクトが保持している変数のこと。
myMc._xの_xのとこ。

ハッシュ ... うーん、ASだと連想配列の事かなぁ。
var ar:Array;
ar["hoge"] = 1;
みたいな、配列の要素を文字列で指定するみたいな。

うん、ごめん、オレも詳しくはないが、
そんな3つの単語の違いが混乱するような説明をしてる本はお薦めしないぞ。
885882:2009/04/15(水) 01:16:52 ID:u3K6WSYF
>>884さん詳しい説明ありがとう。
ちなみに、

>オブジェクト変数 ... オブジェクトが保持している変数のこと。

つまりはプロパティのことですか?
886Now_loading...774KB:2009/04/15(水) 01:26:58 ID:CfbpF+Wc
>>876
どこから無効化するのでしょうか。
教えてください。 OTL
887Now_loading...774KB:2009/04/15(水) 01:44:02 ID:X6a9CCcU
>>885
そうね。ちょっと違和感あるけど、ASではプロパティ=メンバ変数だと思っていいんじゃないかと。
888Now_loading...774KB:2009/04/15(水) 01:46:20 ID:X6a9CCcU
>>886
ムービープレビューのPLAYERのメニューに
制御 > キーボードショートカットの無効
みたいのがあるでショ。
889Now_loading...774KB:2009/04/15(水) 02:09:39 ID:CfbpF+Wc
>>888
おおお、プレイヤーのメニューでしたか!!
ありがとうございますー!!
890Now_loading...774KB:2009/04/15(水) 02:36:33 ID:cIzLA0dj
オブジェクト変数って何を翻訳した言葉だろう。
インスタンスに定義された変数はインスタンス変数というのが一般的で
クラスにたいして定義された変数はクラス変数というのが一般的じゃない。
そうすると、オブジェクト変数というのは、動的に定義されるオブジェクトの
ダイナミックな変数を指してる可能性が高いから、これは内部実装的には
ハッシュと変わらないじゃないっけECMAScriptの仕様だと。
そうすると、ハッシュと同じように
object["hoge"]というアクセスができるんだよね。
ここらへん、Javaぽい仕様とECMAScriptの仕様が混在してるから紛らわしいけど
ダイナミックな変数はコンパイラチェックがきかないからAS3では使用を最小限に
とどめる事が推奨されてるので、そんなに細かい事まで気にする事もないんじゃない
891Now_loading...774KB:2009/04/15(水) 02:39:02 ID:cIzLA0dj
あ〜クラス変数はstaticな変数な事ね
インスタンス変数もクラスに定義するから
紛らわしい書き方になってごめん。
892Now_loading...774KB:2009/04/15(水) 02:55:58 ID:cIzLA0dj
例えば、JavaScriptでこういう感じでobjectの中身にアクセスできるのと
同じようにダイナミックな変数はアクセスできるはずだから

ActionScirptでもやろうと思えばこういう事もできるよ
var aSprite:Sprite = new Sprite();
aSprite.x = 500;
trace(aSprite["x"]); // return 500

普通やらないけど


893Now_loading...774KB:2009/04/15(水) 02:56:51 ID:cIzLA0dj
JavaScriptでこういう感じだった

var obj = {
a: 1,
b: 2,
c: 3
}

obj["a"]
894882:2009/04/15(水) 03:01:56 ID:u3K6WSYF
ん?こういうこと?
プログラムなれないんで意味わからなければ無視してください。

クラス変数
↓(召喚)
インスタンス変数(つまりはプロパティ?)


オブジェクト変数 (≒名前配列みたいなもの?)
895Now_loading...774KB:2009/04/15(水) 05:17:33 ID:ntGkij3D
超基本的な事だと思うのでここで質問させてください><

ビデオ編集ソフトのトラックに置いて動画として使えるようなSWFはflex sdkで作成可能でしょうか?

http://www.saturn.dti.ne.jp/~npaka/flash/as30/TimerEx/index.html
こちらのサイトを参考に flex sdkで簡単なアニメーションをするSWFを作成してみたのですが、
Spriteクラスを継承してタイマーイベントの度にBitmapを動かすようなSWFはフラッシュプレイヤー等で
再生すればきちんと表示されます。

そのSWFをPremiere Elementsのような動画編集ソフトのトラックに置いたり、
SWF to AVI MPEG Convert( http://www.lumixsoft.com/ )のようなキャプチャソフトでAVIファイルに
出力しようとすると、1フレームだけのAVIが出来てしまい動画になりません。

そもそもタイマーイベントやマウスイベント等によって駆動される方式のプログラムは
実装上動画として扱えないだろうという事は想像出来ますが、ActionScriptに何か特別な記載をして
特定のイベントにてアニメーションを行うような組み方をすれば動画として扱われるのではないか?と想像しています。
しかし、どうやれば出来るのか?まったくわからないです。
ActionScriptでプログラムを書く上で、本当に基本的な事が解ってないからですよね。orz
896Now_loading...774KB:2009/04/15(水) 12:40:43 ID:u3K6WSYF
>そもそもタイマーイベントやマウスイベント等によって駆動される方式のプログラムは
>実装上動画として扱えないだろうという事は想像出来ますが、ActionScriptに何か特別な記載をして
>特定のイベントにてアニメーションを行うような組み方をすれば動画として扱われるのではないか?と想像しています。

いや。無理かと思います。

Premiere Elementsのような動画編集ソフト用に載せたり、上記のキャプチャ
ソフトでswfからムービーを取り出すには、Flash(flexじゃないよ)のメインの
タイムライン上で再生されたムービークリップ(actionscriptを使わないタイムラインムービー)
だけです。

もし、それでもなんとかしたいのであれば、swfを動画としてそのまま画面キャプチャ
できるソフトをつかうとかすればいいと思うよ。

というか、わざわざ普通そんなことしないよ。動画ならAfterEffectを使えばいいし。



897Now_loading...774KB:2009/04/15(水) 12:52:43 ID:JumY74px
こんにちは。AS3.0初心者です。
flash MXからCS3に変えて勉強中なのですが、ステージに配置したムービークリップの中からステージの別のムービークリップを制御する際に、以前は
_root.hogehoge
で動いていたのですが、エラーになってしまいます。
root.hogehoge
と書いてもダメですし、
this.hogehoge
と書いてもダメでした。
これの記述方法を教えてください。
基本的な事だからか、僕の持っている教本には書いていないです。
よろしくお願いします。
898Now_loading...774KB:2009/04/15(水) 13:05:11 ID:u3K6WSYF
>897
AS3は、子のMCから、別の子のMCにメソッドできるんでしたっけ?
899Now_loading...774KB:2009/04/15(水) 13:12:21 ID:CkLJfyDy
失礼いたします。

ActionScriptでタブの数をリアルタイムに更新ということは出来ないでしょうか。


DBのHogeテーブルから取り出したデータがA、B、Cの3行の時、タブを3つ作って
それぞれのタブ内にデータを表示。2行の時はタブ2つ、5行の時は5つ作成したいのです。

以上、よろしくお願いいたします
900897:2009/04/15(水) 13:13:53 ID:JumY74px
・・・できないんですか?
え、でもそれができなかったらどうやって操作するんだろう。
901898:2009/04/15(水) 13:47:52 ID:u3K6WSYF
>898
あ、すいません。僕は全部ルートのタイムラインに書くようにしてるので、、。
普通に疑問をもっただけす。

以下にシンタックスかえてみたらいいかも。

_root.hogehoge

MovieClip(root).hogehoge
902897:2009/04/15(水) 13:57:37 ID:JumY74px
>898

ありがとうございます!
動きました。
ムービークリップの操作はできるようになったのですが、
rootのaddEventListenerは操作できないみたいです。
これのやり方もあるのでしょうか?
903898:2009/04/15(水) 14:06:53 ID:u3K6WSYF
rootのaddEventListenerの箇所のソースをみないと
何が悪いのかよくわからないかも。
904Now_loading...774KB:2009/04/15(水) 14:09:51 ID:x2DVR82n
>>897
AS3.0のパスに関するトラブルね。大事なことなのに本での記載が少ない。

901さんのようにキャストする以外に RootPath:MovieClip=root as MovieClip; 
としてもOK。
あるいは、ttp://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=7460&forum=20
のようにパスを調べる方法もある。
905899:2009/04/15(水) 14:13:06 ID:CkLJfyDy
自己解決しました。

お騒がせしました、申し訳ない
906Now_loading...774KB:2009/04/15(水) 14:13:13 ID:OqChyVRX
パスをたどっていく行為がAS3(OOPのほう?)じゃ不作法なんかね?
カスタムイベントが肝?
907Now_loading...774KB:2009/04/15(水) 14:31:34 ID:cIzLA0dj
AS3では
まず、クラスっていうのはオブジェクトの設計図だという例えがよく使われて。
あるクラスからオブジェクトは複数作成されても、もとの設計図は一つだから、
オブジェクトは設計図で定義されている変数を全部共通してもつ事になる。
しかし、オブジェクトはそれぞれ独立しているので変数の値はオブジェクト毎に異なる。
これがインスタンス変数。またはプロパティ変数。
クラス変数または静的(static)変数というのは、クラスに定義されるけど
インスタンス毎に違う値をもつのではなく、クラスに一つだけ定義されて一つの値を持ち、
クラスの識別名を使ってアクセスする変数。
ダイナミックな変数というのは、クラスに定義するのではなく
クラスより作成されたインスタンスの中であるオブジェクトだけに変数を追加する方法。
クラス定義に変数が存在するかをコンパイラはチェックする事ができなく、
インスタンスは動作中にのみメモリに存在するので、変数の追加は動作中に行われるため
取得するメモリがのintやString型のように大きさの事なる領域毎に最適化されない
なんかのデメリットがある。その反面、手軽に使えるので、今でもObject型やMovieClip型
なんかのdynamicな変数を追加できるクラスに変数を追加するのによく使われる。

この中で、普通、ハッシュと同じようにobj["hoge"]といったアクセスを使うのは
ダイナミックな変数だけで、他の変数は動的に定義されないので、"hoge"のように
動作中になるまで値が決まらない値を使う必要性がない。
オブジェクト変数というのがどの種類の変数を指しているのか、分からないが、
インスタンス変数も含めてオブジェクトに定義された変数を総称的に指しているなら
インスタンス変数はハッシュのようにはアクセスする事はまずない。
908897:2009/04/15(水) 14:38:50 ID:JumY74px
>898
addEventListenerは動かないのですが、関数を呼ぶ事はできるみたいなので、
MovieClip(root).hoge();
でルートのhoge関数を呼び出して、その中でaddEventListenerしました!
ありがとうございました!
909898:2009/04/15(水) 14:56:34 ID:u3K6WSYF
>907さん
ありがとうございました。クラスとオブジェクトの関係がちょっと理解深められました。
変数に2種類(静的・動的)あることとかも理解できました。
「オブジェクト変数」という言葉が何を指すか狭義・広義ありそうで、
なんだかあいまいで僕の質問自体がおかしかったでしたね。
ためになります!

>>897さん
よかたですた。
910Now_loading...774KB:2009/04/15(水) 15:09:39 ID:cIzLA0dj
あ〜でも、その本って
オブジェクト変数とかカスタムオブジェクトって言葉を
dynamic指定されたクラスから作られたインスタンスに
ダイナミック変数を追加する方法を説明するのに使ってそう。
だとしたら、大体合ってると思うんだけど。
でも、AS3で既存のクラスを拡張するのは、dynamic指定された
クラス以外はクラスを継承してそのクラスの設計図に変数を追加する
方法を使うか、delegateっていってあるクラスが他のクラスの
オブジェクトのインスタンスを保持する方法を使うかだから、
AS2以外のプログラミング経験がない人にこういう説明しても
意味分からないと思う事に書いてて気づいた。
だから、普通はインスタンス変数使うけど、ObjectとMovieClipは
dynamicという特別なクラスだから、クラスに書いてなくても
あとからオブジェクトに変数追加できるぐらいの理解でいい気がする。
911898:2009/04/15(水) 15:38:41 ID:u3K6WSYF
ありがとうございます。勉強になります。

>だから、普通はインスタンス変数使うけど、ObjectとMovieClipは
>dynamicという特別なクラスだから、クラスに書いてなくても
>あとからオブジェクトに変数追加できるぐらいの理解でいい気がする。

了解しました。スクリプトに慣れたら。もっとオブジェクト指向
勉強したいですね。

因みに、、

「カスタムオブジェクト」は以下から
http://books.google.com/books?id=ZFWO8oPNrNEC&pg=PA30&dq=%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88&lr=&as_brr=3&hl=ja

「ハッシュ」と「オブジェクト変数」は
一週間でマスターする ActionScript3.0 に載っていました。

詳しい説明ありがとうございました。
912Now_loading...774KB:2009/04/15(水) 17:01:43 ID:nRXiUYyB
一週間でマスターする ActionScript3.0 
そんな本は捨てろ
913Now_loading...774KB:2009/04/15(水) 17:26:49 ID:x2DVR82n
>>912
いや、俺は良本だと思うよ。
必要なことが分かり易く一通り書いてあるから。

ただ、これにもAS3.0のパスのことは書いてない。
914Now_loading...774KB:2009/04/15(水) 20:41:15 ID:ntGkij3D
>>896
ありがとうございます。(亀レスすいません)
やっぱりダメですかorz

SpriteではなくMovieClipクラスを継承して作成して、何かのプロパティーにfpsと総フレーム数をセット
MovieClipクラスが持つコールバック関数をオーバーライドするという流れを仮定して調べてみたのですが、
どこにもそんな記述が見当たらないorz

自分は販売されているFLASHツールやAEも持っていないので、素直にデスクトップキャプチャとか使ってみます。
915898:2009/04/15(水) 21:48:45 ID:u3K6WSYF
>>914
あ、僕が知らないだけかもしれない。だれか知ってればいいね。

ちなみにFLASHから離れて申し訳ないけど。
「ダウンロード忍者」を使ってデモムービーをキャプチャ
してみたので参考にどうぞ。体験版なら無料でDLして使えるはずです。

http://tikuwa.net/file/10301.zip.html
DLキー「flash」
916Now_loading...774KB:2009/04/16(木) 01:17:10 ID:25czaPx4
>>915
また亀ですいません。「物凄い勢い(ry」のスレである事を忘れてました。
わざわざありがとうございました。

カハマルカの瞳というフリーソフトでキャプチャしてみたところ画面サイズが小さい物は問題ないのですが、
1280x980くらいのサイズだとカクカクとコマ落ちしてしまいました。
HDRECSというビデオキャプチャカードをたまたま持っていたので、別のPCでSWFを再生してキャプチャしたところ
滑らかな動画が撮れました。 いちいちPC2台を繋ぐのが面倒なので「ダウンロード忍者」というのも試してみます。

フレームレートを低めに作ってキャプチャした後で倍速にすればいいかも知れませんね。
917LiveMotion:2009/04/16(木) 02:23:28 ID:FXN80n1c
cIzLA0djさん

ぶり返してすいません。

>ObjectとMovieClipはdynamicという特別なクラス

では、特別ではないクラス(=静的変数)は、
例えば、Dateクラスのようなものでしょうか?
918Now_loading...774KB:2009/04/16(木) 03:15:25 ID:8WgF9Hht
>>917
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/Date.html

Dateもdynamicらしい。
クラス public final dynamic class Dateって宣言されてる事から分かる。
トップレベルに定義されてるクラスはだいたいdynamicぽいね。
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/package-detail.html

あと、クラス=静的変数じゃなくて、クラスに定義される変数に静的変数と
インスタンス変数があるって意味で書いたつもりだった。
車を工場で製造してるとき、
クラスは設計図で、インスタンスまたはオブジェクトは設計図から作られた車で
その車を買った人が設計図にないパーツを追加してカスタマイズすると
そのオブジェクト固有の変数になる。で、このカスタマイズ可能ですよと設計段階で
指定してやるのがdynamic宣言で、クラスで定義されてない変数をあとから追加すると
ダイナミックなインスタンス変数とか呼ぶ。
詳説ActionScript3.0っていう本読めば全部書いてある。初心者向けの本なんこも読むなら
これ一冊読んだほうが早い気がする。どうしても分からなかったらOreillyの初めてのなんちゃらとかか
919Now_loading...774KB:2009/04/16(木) 03:44:55 ID:8WgF9Hht
http://www.amazon.co.jp/dp/4839929440

Amzonでレビューみてみたけど、地雷すぎるだろその本。
後回しにして他の本で理解したあとにサンプルだけ楽しめば。
920LiveMotion:2009/04/16(木) 04:21:42 ID:FXN80n1c
うーん。ありがとうございます。
も少しレベルの高い本で学習しないと身にならないですね。

>Amzonでレビューみてみたけど、地雷すぎるだろその本。

大地震でした(泣)。でも最後まで読み終えましたよ。
今はOreillyの「初めてのActionScript3.0」を読んでます。
Oreillyってなんだか、プロっぽくてかっこいいす。(見た目が)

あもう。腹を括ってFLASHやるしかないな。
921Now_loading...774KB:2009/04/16(木) 15:18:43 ID:k83tQed8
こちらで宜しかったのか少し不安ですが、質問させて頂きます。

MacromediaFlash8でシューティングゲームを作成しております。
ランチャーが弾を撃った際にのみムービークリップの再生フレームを変えたいのですが
まず最初に
luncher_mc.onEnterFrame = function()
{
if(this._currentframe == 8)
{
this.gotoAndPlay(1);
}
}
と記して(1〜7が通常モーション)
if(Key.isDown(Key.SPACE))の中に
luncher_mc.onEnterFrame = function()
{
this.gotoAndPlay(8);
}
と入れたのですが(8〜15までが発射モーション)
これではスペースキーを押した後に
ランチャーがフレーム8で止まったままになってしまい困っています。

スペースキーを押した際にのみ発射モーション(8~)を行い
その他の場合にはまた1〜7のループに戻すにはどうしたらよろしいでしょうか?

初歩的な質問、長文失礼しましたm( __ __ )m
922Now_loading...774KB:2009/04/16(木) 16:14:00 ID:KWfSZXNj
7フレ目に
stop();
もしくは
gotoAndPlay(1);
を書いておく

1フレ目に
if(Key.isDown(Key.SPACE)) gotoAndPlay(8);
と書いておく
15フレ目に
gotoAndPlay(1);
と書いておく
923Now_loading...774KB:2009/04/16(木) 16:24:23 ID:k83tQed8
1-7すべてにif(Key.isDown(Key.SPACE)) gotoAndPlay(8);と入れたら解決しました。
922さん 本当にどうもありがとうございます!!!
924Now_loading...774KB:2009/04/16(木) 19:18:03 ID:2fyYMDey
AS3パッケージとDate関数を使って
10分置きにmoveclip画像を切り替える方法を教えてください。

925Now_loading...774KB:2009/04/16(木) 21:21:00 ID:8WgF9Hht
926Now_loading...774KB:2009/04/16(木) 21:26:32 ID:S7CAq0aa
すいません、教えてください。
A,B,Cという文字の配列を作って、テキストエリアにランダムに表示、指定の文字が来たら、
その文字だけ残して次の文字をランダムに。。。というのをやりたくて、以下のようなスクリプトを作ってみたのですが、
これだと、順番通り「A,B,C」といかず、いきなり「ABC」になってしまったりしてうまくいきません。うまい書き方も思いつかず・・・かなり悩んでいます。どなたかご教授ください。よろしくお願いします。
var alphabet:Array=["A","B","C"];
stage.addEventListener(Event.ENTER_FRAME,mojihenkan);
function mojihenkan(evt:Event):void {
var moji:uint=Math.floor(Math.random()*alphabet.length);
if (chk==0) {mojimoji.text =alphabet[moji];}
if (moji==0) {chk=1;}
if (chk==1) {mojimoji.text = "A" + alphabet[moji];}
if (moji==1) {chk=2;}
if (chk==2) {mojimoji.text = "AB" + alphabet[moji];}
if (moji==2) {chk=3;}
if (chk==3) {mojimoji.text = "ABC";
stage.removeEventListener(Event.ENTER_FRAME,mojihenkan);
}
}

927Now_loading...774KB:2009/04/16(木) 21:27:51 ID:dR19KWcZ
200個のフラグ(入るのは0か1のみ)を作りたいのですが
flag = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...];
とすればできますが非常に長くなってしまいます。上記以外の方法で何か簡単な記述で200個のフラグを作る+判定する方法はないでしょうか?
928Now_loading...774KB:2009/04/16(木) 21:59:00 ID:8WgF9Hht
なんだその汚い条件分岐
switch文しらね〜のかよ
929Now_loading...774KB:2009/04/16(木) 22:01:33 ID:8WgF9Hht
クラス作って
オブジェクトに自分の状態をフラグで保持させればいいんじゃね
930Now_loading...774KB:2009/04/16(木) 22:41:27 ID:dfKUE5Nt
>>927
for使ったら?
931Now_loading...774KB:2009/04/16(木) 23:19:53 ID:KWfSZXNj
>>926
質問の意味がよくわからん

ランダムにAかBかCを表示して、それに続くようにAかBかCを表示して・・・っていうこと?
932LiveMotion:2009/04/16(木) 23:41:24 ID:FXN80n1c
FLASHのアクションパネルでスクリプトを打つとき
フォントは何に設定してます?
デフォルトで使っているのですが、コロンやセミコロン。ピリオドとか
読みづらくて、よく間違えます。

プログラムに合うフォントってあるんでしょうかね?
933Now_loading...774KB:2009/04/16(木) 23:51:36 ID:8WgF9Hht
http://mix-mplus-ipa.sourceforge.jp/preview.html

Bitstream Vera Sans Monoってのが割と判別しやすくて
人気あるらしい
934926:2009/04/17(金) 00:03:55 ID:SIz5cRG6
>931
そうです。
ランダムに一文字ずつ表示させたいのです。
935Now_loading...774KB:2009/04/17(金) 00:12:08 ID:olyf193B
var myText:String = "";
stop();

stage.addEventListener(Event.ENTER_FRAME,mojihenkan);
function mojihenkan(evt:Event):void {
{
var alphabet:Array=["A","B","C"];
var moji:uint=Math.floor(Math.random()*alphabet.length);
myText += alphabet[moji];
}

>>934
こゆこと?じゃないよね?
936Now_loading...774KB:2009/04/17(金) 00:18:51 ID:WHzYwYXm
>>934
文字がランダムにごにょごにょ動いて最終的にABCにしたいんじゃないの?
937926:2009/04/17(金) 00:29:10 ID:SIz5cRG6
>935
936の方が指摘してくれていますが、それだと最終的に「ABC」にならず、
ABCの順番もランダムになってしまいます。
Aから順番にA,B,Cと表示させて、ストップさせたいのです。
分岐の判定をどのようにしたらいいかわからず、質問させてもらいました。
938LiveMotion:2009/04/17(金) 00:30:59 ID:1N5Hq3kU
>>933さん、ありがとう。

Bitstream Vera Sans Mono
最高です!
939Now_loading...774KB:2009/04/17(金) 02:51:10 ID:Ks5Y65WQ
http://clockmaker.jp/blog/2009/02/source_qfilms/

ここの人が公開してるソースのTextShuffleっていうクラスで
ずばりその事やってるよ。結構よく見かけるから他の書き方とかも
ブログなんか探せばありそうだけど
940Now_loading...774KB:2009/04/17(金) 09:18:53 ID:Nrs5I1ce
[環境]AS:AS3.0 OS:XP
[質問]スタイルシートの継承を行うとバグる。
[やったこと]
<<HTML部分>>
<HEAD><TITLE>test</TITLE><LINK REL="stylesheet" TYPE="text/css" HREF="style.css"></HEAD>
<BODY>
<p><strong>トラトラトラ</strong></p>
<embed src="test.swf" type="application/x-shockwave-flash" width="550" height="400" bgcolor="#ffffff" >
</BODY>
<<CSS>>
p {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
line-height: 20px;
color: #0000FF;
}
p strong {
color: #FF0000;
}
<<Flash>>
CSSを読み込み、XMLより読み込んだ文字列「トラトラトラ」をテキストフィールド.htmlTextで表示。
<<結果>>
HTML表示の文字は赤色になります。
Flash部分は黒い文字になります。
cssの p strong のブロックを削った場合FlashへCSSが適用される。
XMLへCDATA入れて見たりいろいろ試したのですが、うまくFlashの文字列が赤色になりません。
941Now_loading...774KB:2009/04/17(金) 10:24:57 ID:j43K2kq8
>>924
DateよりもTimerクラス使って10分おきに処理実行すればいいんじゃね?
942Now_loading...774KB:2009/04/17(金) 10:44:31 ID:GafjXn98
actionscript3.0でカスタムイベントの勉強をしています
渡す値nがn % 2 == 0だったらnの値をtraceするという処理の一部です

public class TestEventDispatcher extends EventDispatcher {
public var n:Number;
public function TestEventDispatcher() {
n = 0;
var timer:Timer = new Timer( 500 );
timer.addEventListener( TimerEvent.TIMER, timerFunction );
timer.start();
}
public function timerFunction(event:TimerEvent):void {
if( n % 2 == 0 ) {
//trace(n, "-test");
dispatchEvent( new MyEvent( MyEvent.GOGO, n ) );
}
n += 5;
}

実行結果は一定間隔で0,10,20,30,40...と出力されました
この一部を下のように変えてみたのですが
public function TestEventDispatcher() {
n = 0;
timerHandler();
}
public function timerHandler():void {

この場合出力は何も起こりませんでした、n = 10 などとやってみても同じく反応がありません
コメントにしている//trace(n, "-test");を実行してもnの値は正常に渡されているようですが
そもそも下ソースのように一度だけ値を渡してイベントに反応させるという事はできるのでしょうか?
943Now_loading...774KB:2009/04/17(金) 11:14:38 ID:j43K2kq8
>>942
日本語が良く分からないけど
public function timerFunction(event:TimerEvent):void {

public function timerFunction(event:Event):void {
こうして

timerFunction(new Event("dummy"))
こうしたいってことかな?
944Now_loading...774KB:2009/04/17(金) 11:17:20 ID:j43K2kq8
ああ、カスタムイベントオブジェクト作ってるのかな?じゃあ、
timerFunction(new MyEvent( MyEvent.GOGO, n ));
ってことかな?
945Now_loading...774KB:2009/04/17(金) 11:49:41 ID:uKwP6TvZ
num = 10;
num1 = 2;
num2 = 101;
1の位を取り出す方法を教えて下さい。
946942:2009/04/17(金) 12:07:29 ID:GafjXn98
>>943
ありがとうございます、説明下手ですみませんでした
そして自己解決できたようです

・呼び出し側
var t:TestEventDispatcher = new TestEventDispatcher();
t.addEventListener( TestEvent.GOGO, goFunction );
t.se( 10 );
・TestEventDispatcher側
public class TestEventDispatcher extends EventDispatcher {
public var n:Number;
public function TestEventDispatcher() {
n = 0;
}
public function se( n:Number ):void {
this.n = n;
timerHandler();
}
一度だけ値を渡す方法をTestEventDispatcherのコンストラクタで渡していたのが間違っていたようです
イベント等を設定した後に値をse()で渡した所ちゃんとイベントが反応してくれました、失礼しました
947Now_loading...774KB:2009/04/17(金) 12:16:48 ID:YC6tJjPl
>>945
Stringにしておしり1個取得すりゃいんじゃね
948Now_loading...774KB:2009/04/17(金) 12:41:09 ID:jz8O5Y3b
>>945
num % 10
949LiveMotion:2009/04/17(金) 14:11:16 ID:1N5Hq3kU
AS3.0からイベントにイベントリスナーを使うようになりましたが、
JavaScriptには、このような方法はないですよね。

javaとかは、このようなイベントの方法をとるんでしょうか?
950Now_loading...774KB:2009/04/17(金) 14:21:28 ID:olyf193B
>>945
常に整数である(小数点以下の値は無い)っていう前提でいいの?
951Now_loading...774KB:2009/04/17(金) 14:41:07 ID:uKwP6TvZ
小数点はありません。
>>947  >>948
なるほど。型が変わらない商はいいですね。
952Now_loading...774KB:2009/04/17(金) 16:04:52 ID:Ks5Y65WQ
JavaScriptにもaddEventListenerはあるよ
ただしW3CのEventモデルとIEのEventモデルが違うから
jQueryのようなライブラリを使って
コールバックを無名関数で登録するやり方のほうが簡単だけど。

http://docs.jquery.com/Events/click

Javaは昔ちょっとやっただけだから、もうあんまり覚えてないけど
SwingっていうGUIライブラリが標準でaddActionListenerとかいう
メソッドでコールバック指定するみたい。
http://www.javadrive.jp/tutorial/event/index1.html
953Now_loading...774KB:2009/04/17(金) 16:10:02 ID:Ks5Y65WQ
http://docs.jquery.com/Events/bind

こっちのほうがよかったか
954LiveMotion:2009/04/17(金) 18:25:12 ID:1N5Hq3kU
952さんありがとう。
てっきりJavaScriptはイベントハンドラだけで処理するのかと
思ってたです。

ところで、AS3.0についてイベントリスナーを使ったイベント処理が
標準になってますけど、いままでのon()のようなイベントハンドラの
使用より、何かしらのメリットがあるんでしょうか?

勉強を始めて(リスナー関数の引数設定とか)結構わけわからん状態なのですが、
そのイベントリスナーを使うメリットとか判れば、なんだかやる気が
でるかも知れないなあ。と・・。
955Now_loading...774KB:2009/04/17(金) 18:34:16 ID:CuGuCkyH
【Flash】Adobe CS3を語るスレ【C S 3】
http://pc12.2ch.net/test/read.cgi/swf/1183291726/775
↑分かる方がおられましたらお願いします^^;

>>954
リスナーを使うと1つのイベントに複数のリスナーが付けられます。
onだと1つしかリスナーが付けられないので他にイベントを拾いたい場所があっても出来ません。
956Now_loading...774KB:2009/04/17(金) 22:05:33 ID:Yy0OWnUk
>>937
グローバル変数とか
mojimoji.text = "";
crtText = "";
crtIndex = 0;

ENTER_FRAMEループ
function()
{
 if(crtIndex < alphabet.length)
 {
  randomNum = Math.floor(Math.random() * alphabet.length);
  if(randomNum = crtIndex)
  {
   crtText += alphabet[crtIndex];
   ++crtIndex;
  }
  mojimoji.text = crtText + alphabet[randomNum];
  }
 }
}
crtIndex、crtTextは無しでもできるだろうけど
957Now_loading...774KB:2009/04/17(金) 23:45:25 ID:QJxwBTg0
As2.0で作っています。

20個の画像入りボタンを並べたアルバムのようなものを作っています
使用しているのは10個のボタンで、あと10個は空ボタンとなっています
新しい画像を増やした際に新着順に並べるためのボタン記述を書き直す
手間を省きたくて、
変数ListMax = X; として、現在、ボタンの操作する
this._mc.sum_16_mc.btn16.onRelease = function() {
というコードを
this._mc.sum_(X-1)_mc.btn(X-1).onRelease = function() {
this._mc.sum_(X-2)_mc.btn(X-2).onRelease = function() {
こんな感じにListMaxを変えるとMCを増やしたり並べ替えが簡単にできるように
しようと思っています。

いろいろ試行錯誤をしてみたのですが、上手く動作してくれません。
アドバイスをぜひお願い致します。
958Now_loading...774KB:2009/04/17(金) 23:49:26 ID:CuGuCkyH
mc.aaa

mc['aaa']

var s = "aaa";
mc[s]
959Now_loading...774KB:2009/04/18(土) 12:21:47 ID:HQ6OlCLA
as3です
ムービークリップaを作ってaの中にhoge()というファンクション作ったとして

そのaをインスタンス名 a0〜a2 で3個配置して
それぞれの hoge()をたたきたい場合

a0.hoge();
a1.hoge();
a2.hoge();
だとうまくいくのに

for(var i = 0;i <= 2;i++){
this["a"+i].hoge();
}
だと失敗するんだけど…

this.a0.hoge();
もダメ。そもそもthisじゃないなら省略したときもダメじゃないのかと…
何か私が勘違いしてるのかもしれないです。

すんません。ボスケテ


ちなみに インスタンス名 "条件は未定義であり、プロパティがありません。" this as3
とかでググってしらべ済です。
こういう場合どうで調べたらいいのか…
960LiveMotion:2009/04/18(土) 13:54:43 ID:+Zyy1Img
955さん。
ありがとう。勉強になります。
961Now_loading...774KB:2009/04/18(土) 14:54:23 ID:b2Bnlmve
>>959
普通にできてると思うけど、そのクリップと呼び出し関数の位置関係はどうなってる?
あ、それからクリップはどうやって配置したの?
as2とas3のthisは結構変わってるからその辺の問題かな。
962959:2009/04/18(土) 15:26:21 ID:HQ6OlCLA
>>961
レスどうもです。

まっさらな状態からそれだけに特化するもの作るとできるとこをこちらでも確認しました。
まっさらじゃないと今までできていたのに突然できなくなるようなのです。
原因を突き止めたいのですが、いつ発生するのか不明なので時間がかかりそうです。

OK -> a0.hoge();
NG -> this.a0.hoge();

どちらにしてもこれが謎すぎて…

関数はインスタンスのレイヤ1に
function hoge(){
から書いています。

配置の仕方は作成したライブラリをドラッグ&ドロップで置いたあとに
インスタンス名を変えているだけです。

試しにインスタンスをtraceしてみたところ
trace(a0) -> [object Timeline_**]
trace(this.a0) -> undefined

ワララン・・・ orz
963Now_loading...774KB:2009/04/18(土) 15:29:10 ID:b2Bnlmve
>>962
trace(this)は?
964Now_loading...774KB:2009/04/18(土) 15:30:46 ID:b2Bnlmve
>>962
あと呼び出し側はどうやって、どういうタイミングで呼び出されるの?
965959:2009/04/18(土) 15:36:30 ID:HQ6OlCLA
>>963
trace(this)は [object global] だった。
これな気がしてきた…

>>964
呼び出し側はやはりMCなんだけどMCに張り付けられた a0を
MCのクリックイベントで呼びに行こうとしています。

というか素早い対応ありがとうございますm(_ _)m
966Now_loading...774KB:2009/04/18(土) 15:39:42 ID:b2Bnlmve
>>962
とりあえずエスパーすると
var callback:Function = function(e:Event){
trace(this.a0);
}
だと失敗して
function callback(e:Event){
trace(this.a0);
}
だとうまくいったりしないかな。
967959:2009/04/18(土) 15:49:40 ID:HQ6OlCLA
>>966
クリックイベントの宣言のしかたということですかね?
その場合だと、最初から後者で、前者は宣言自体できませんでした…
968Now_loading...774KB:2009/04/18(土) 15:55:05 ID:b2Bnlmve
>>967
宣言してるところでtrace(this.a0);はうまくいってるかな?
その時点でうまくいってないならそこを見直すべき。
っていうかもう実際見てみないとアドバイスできんな。
969959:2009/04/18(土) 16:10:42 ID:HQ6OlCLA
>>968

undefined
このざまです…

すみません。大丈夫です。もともとの数が少ないので
とりあえずはswitch文+手打ちで回避しちゃいます。

少ない情報で対応していただきありがとうございました。
970Now_loading...774KB:2009/04/18(土) 16:21:46 ID:fobnt7wY
trace(this.???.a0);

というふうに ??? に何かのインスタンス名を入れる必要があるとか?
trace( parent.a0 ); みたいにしたら動くようになったことがあるなぁ。

いずれにしてもthisが何を指しているのかを調べればおのずと解決するかと。
というか、それが分かってないのはまずいと思う。
971Now_loading...774KB:2009/04/18(土) 16:26:38 ID:we2280lr
Flashオーサリングツール持ってないからよく知らないけど、
thisはグローバルを指してて、a0はローカル変数になってるから
見えないんじゃない。
関数とかクラスの内部で変数宣言してるからローカルになってるとか
そんな感じじゃね
972959:2009/04/18(土) 18:00:43 ID:HQ6OlCLA
回避策できました。

初回起動時はなぜかthisの値がほしい値だったので

var init:int;
var thisObj:MovieClip;
if(init != 1){
 init = 1;
 thisObj = this;
}

レイヤ1のスクリプトにこれをいれて thisObj.a0.hoge();
とすることで対応できました。

同じレイヤ内でいつのまにかthisの値が変わるのは謎なんですが
とりあえずこれでいきます。

>>970
>>971
レスありがとうございます。
973Now_loading...774KB:2009/04/18(土) 18:04:37 ID:RtPujbOx
すいせん下記のコードのどこが悪いのでしょうか?
package {

public class ChkTime {

public var dt:Date;
public var hh:Number;
public var mm:Number;
public var ss:Number;

function ChkTime() {

addEventListener(Event.ENTER_FRAME, updateChkTime);
}
//リアルタイム
public function updateChkTime(event:Event):void {
//現在時刻の時分秒を調べる
dt = new Date();
hh = dt.getHours();
mm = dt.getMinutes();
ss = dt.getSeconds();
trace(ss);
}
}
}
974Now_loading...774KB:2009/04/18(土) 18:06:23 ID:HKK8RsPf
wonderful
http://wonderfl.kayac.com/
で公開されているコードを自分のFLASH CS3で使用するにはどうしたらいいですか?
コードをダウンロードしてコピペしてもエラーになってしまいます。
975Now_loading...774KB:2009/04/18(土) 18:36:33 ID:we2280lr
そのコードをメンテナンスする人の事を考えると
素直にドキュメントクラスをアタッチしたらほうが良い気がする。
976Now_loading...774KB:2009/04/18(土) 18:59:52 ID:90zV1oAe
>>973
enterFrameイベントが使えるクラスを継承してないからイベント追加できないんじゃね?
977Now_loading...774KB:2009/04/18(土) 19:04:30 ID:RtPujbOx
>>976
結局タイムラインにオブジェクトを配置していないから、
と言う事ですか?
978Now_loading...774KB:2009/04/18(土) 20:44:41 ID:WrlWD1vz
>>977
どこが悪いのですか?ってアバウトすぎるだろw
どういう環境でどういうエラーが出るのかくらい書いてほしい

たぶんimport文がないから動かないんだと

>>974
wonderfl ね
wonderflはクラスで作られてるから、タイムラインにそのまま貼っても動かないよ
ドキュメントクラスに指定するといいかも
979Now_loading...774KB:2009/04/19(日) 05:46:56 ID:ARR8DMQR
すまね。シンボルとクラスの違いがよくわからんのだが
因みに、インスタンスとオブジェクトの違いもよく分からん。
だれか教えてくり。
980Now_loading...774KB:2009/04/19(日) 14:06:37 ID:rRay3+JO
>>979

シンボルとクラスは、ほぼ同じモノを指す。

インスタンスとオブジェクトの違いは、

オブジェクトはよく言われる喩えでは、ひな形。
インスタンスは、ひな形から生み出された実体とかいうけど、
この説明よく判らんよな。

そもそもオブジェクト指向の起こりは、プログラムの殆どの処理は変わらないのに、
変数の一部が違うために、同じプログラムを一々コピペして、一部を編集とか言うのが効率悪いよね
という現場の声が切っ掛けになったと聞いた事がある。

コピー元がオブジェクトで、コピーされて変数の一部を変更されたのがインスタンスだ。
オブジェクトからインスタンスを生成するというのは、オリジナルのプログラムをコピぺして、
その一部の変数値を変更するという行為を効率よくした仕組みだ。

さらにオブジェクト指向では、変数のみならずメソッドも変更できたりする。
981Now_loading...774KB:2009/04/19(日) 14:24:38 ID:t2ORW+rQ
オブジェクトというのは物っていう意味。
インスタンスってのはクラスという設計図を元にして作られたオブジェクト(物)のこと。

石ころ、自動販売機、車、ロボット => 全部オブジェクト
車、自動販売機 => クラスという設計図の通りに作られたオブジェクト
982Now_loading...774KB:2009/04/19(日) 16:52:45 ID:ARR8DMQR
980,981さん。ありがとう、ちょっと理解できた。

えっと。クラスとシンボルの関係なんだけど、
クラスの中のうちで、ライブラリに入っているものがシンボルって
のはどうでしょうか?
983Now_loading...774KB:2009/04/19(日) 17:55:43 ID:rRay3+JO
>>982

ライブラリに入っているものが、シンボルでもありクラスでもある。

Adobe Flash CS4のライブラリーに図形とかを登録する時に、登録されたモノを総称して『シンボル』という
ActionScript3からライブラリー内のシンボルを呼出してプログラムで加工したいときは、これを『クラス』とよぶ
984Now_loading...774KB:2009/04/19(日) 19:59:08 ID:ARR8DMQR
983なんどもありがとう。


>Adobe Flash CS4のライブラリーに図形とかを登録する時に、登録されたモノを総称して『シンボル』という
>ActionScript3からライブラリー内のシンボルを呼出してプログラムで加工したいときは、これを『クラス』とよぶ



これをステージに載せたとき『インスタンス』になる。

でOK?
985Now_loading...774KB:2009/04/19(日) 20:22:55 ID:1HyWw8Nc
インスタンスっていうのはクラスから作られたオブジェクトという意味を強調した言い方で
単にオブジェクトというと、もっと総称的にデータとデータを扱う手続きを決めた関数をまとめて
メモリにしまっておけるようにしたものという感じかな。
986Now_loading...774KB:2009/04/19(日) 20:38:50 ID:ARR8DMQR
>983
おお分かりやすい。ありがとお。
987Now_loading...774KB:2009/04/19(日) 22:21:18 ID:ARR8DMQR
あ、間違えた。985さんありがとお。
988Now_loading...774KB:2009/04/20(月) 10:53:00 ID:kZI8CvFc
今初めてゲームを作っているのですが
ドラクエのようなコマンド式の戦闘を作ってみようと考えています

・1体1のバトルで、自分が常に先攻のため素早さは考慮しない(というかステータスという概念はない)
・属性も考慮しない
・装備も無く、攻守等による計算無しで、ランダム要素も無い
・1回だけの戦闘で終わり
・コマンドは「戦う」→「スキル選択」と「守る」の2つのみで「アイテム」や「逃げる」は無い

ゲームの流れとしては

1.自分のターン:コマンドを選ぶ
2.戦闘開始
  自分:先攻。コマンドで選んだスキルが発動する
  相手:後攻。ランダムで数種類の攻撃スキルの中から1つ発動
  1.へ戻る
3.相手か自分のHPが0になったら終了

という感じです。ただ、これではあまりゲームとして面白くないので
自分のターンに○○というコマンドを選んで次のターンに◇◇というコマンドを選ぶと大ダメージ、という風にしたいです

そこで質問なのですが、このゲームを作るのに最低限知っておくべきASは何でしょうか?
とりあえずAS関係の解説サイト等一通り見たのですが、if分岐が必要かなと思いました
他にも知っておくべきASがあれば教えてください。また、参考になるサイトもあれば教えてください
989Now_loading...774KB:2009/04/20(月) 11:34:13 ID:Fwk5A33H
>988
つ>1
990Now_loading...774KB:2009/04/20(月) 12:23:56 ID:mi/A44HK
非常に基本的な質問で恥ずかしいのだが
環境はCS3 AS3
for文で関数の識別子に変数を入れて複数作成しようと思い

for(var i:int=0;i<10;i++){
function this["xFunc"+String(i)]():void{
}
}

上記で xFunc0〜9 の関数を作れるかと思いきや
識別子の場所でシンタックスエラーになってしまう。
どう記述すれば良いのか教えてくれないか。

エラー内容は下記のとおり

1084: Syntax error: expecting identifier before leftbracket.
1084: Syntax error: expecting leftparen before leftbrace.
1084: Syntax error: expecting identifier before leftbrace.
1084: Syntax error: expecting rightparen before leftbrace.
991Now_loading...774KB:2009/04/20(月) 12:34:33 ID:c9G5kP8x
>>990
abc();
function abc(){ trace("success!"); }
992988:2009/04/20(月) 12:46:44 ID:kZI8CvFc
>>989
失礼しました
環境はCS3、AS3です
よろしくお願いします
993Now_loading...774KB:2009/04/20(月) 12:46:52 ID:+6zqXwO1
押すとフラッシュが再生されるボタンの作り方がわかりません…
ボタン自体は作れたんですが、再生すると一瞬現れて消えてしまいます…

初心者スレで書き込もうとしたんですが、ユーザー設定消失とかで書き込めないので
こちらに質問させていただきました…
994990:2009/04/20(月) 13:00:44 ID:mi/A44HK
>>991
書き方が下手で申し訳ない。
聞きたかったのは関数宣言の記述ではなくて
「関数の識別子に変数を入れて宣言する場合の記述」なんだわ。

もし>>991に答えがあって俺が読み取れてないのなら生暖かくスルーしてくれ。
早レスthx
995Now_loading...774KB:2009/04/20(月) 13:50:27 ID:ioLowvI5
>>990
こう?

this["xFunc"+String(i)] = function():void{
}

勘違いしてたら華麗に叩いてくれ
996Now_loading...774KB:2009/04/20(月) 14:38:46 ID:mi/A44HK
>>995
すまない、やりたいことの意味は正にそれなんだが

for(var i:int=0;i<10;i++){
this["xFunc"+String(i)]=function():void{
}
xFunc1();//テストとしてxFunc1を呼び出してみる
}

上記を走らせてみると
1180: Call to a possibly undefined method xFunc1.
と返ってきて関数を呼び出せていない様子なんだ。
varとデータ型指定が無いから宣言が出来てないのかと予想しているけど

var this["xFunc"+String(i)]:Function=function():void{}

とするとまたシンタックスエラーが出てしまう。
超基本的なところが理解できてない予感で汗顔だわ。

なんにせよthx。名無し関数を変数に入れて参照ってのは目からウロコで大変勉強になった。
997Now_loading...774KB:2009/04/20(月) 15:16:53 ID:ioLowvI5
>>996

var funcList:Array = new Array();
for(var i:int=0;i<10;i++){
  funcList[i] = function():void{}
}
funcList[5]();

とかどうでしょ。
可変関数みたいのあまり使った事ないので
もっとスマートな方法があるのかも
998990:2009/04/20(月) 15:33:45 ID:mi/A44HK
>>997
thxうまくいったわ!
配列を使うのか、本当に勉強になるわ。

可変関数って言葉自体初耳の無知者だが、調べてみる。
面倒かけました。

>>991>>995>>997
重ねてthx!
999Now_loading...774KB:2009/04/20(月) 15:45:34 ID:Fwk5A33H
>>998
興味本位なんだけど
for文でつくると関数の中身は同じだよね
なら一つの関数で、引数とswitchあたりで振り分ける方が
管理が楽じゃない?
何か目的があるとか、上手いやり方が出来るとか?
1000990:2009/04/20(月) 17:11:02 ID:mi/A44HK
>>999
ガッカリさせるかもしれないが、そんな高尚なものじゃないんだw
恥ずかしながら、おっしゃるとーり
初心者の理解不足からくる遠回り

たった今、引数で管理するように作り変えたよ

>>991>>995>>997さん達にしてみれば、なにしてんのwってもんでしょうが、生暖かく見逃して
しかし前述の例も方法として興味深い、忘れないでおきます
あと>>999気付かせてくれてthx

1000で恥を晒したが為になりました
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。