ActionScript 誰かが物凄い勢いで解答するスレ 23
1 :
Now_loading...774KB :
2009/04/20(月) 17:49:32 ID:jT4q6q0N
2 :
Now_loading...774KB :2009/04/20(月) 20:04:30 ID:w9fEzuzB
3 :
Now_loading...774KB :2009/04/20(月) 21:01:25 ID:TTug5t6O
下記コードで生成されたインスタンスから順に右に移動する方法を教えてください。 現状では生成される際に右に移動します。 function makeMC(event:TimerEvent):void { var mc:MovieClip = new MovieClip(); mc.name = "mc"+i; //イメージ描画 //円を描く i = ++i; var color:uint = Math.random() * 0xFFFFFF;//ランダムカラー mc.graphics.beginFill(color); mc.graphics.drawCircle(0, 0, 40-(i)); //表示 my_container.addChild(mc); trace(mc.name); //プロパティ設定 mc.x = 250+i*10; mc.y = 200; }
>>2 三角関数使う。 一度ごとに円に点があると想定して、その点同士を直線で結ぶ。 なんてどうかな。
>>3 new MovieClip(); で生成したmcを配列に入れて配列で管理する。
多分、Frocessingのソースコードの中にそういうArc書くコマンドの例あるんじゃね。 ProcessingにもArcっていうコマンドがあるから
質問があります。 環境はFlashCS3 ActionScript3.0で、 スクリプトはasファイルに書いています。 Flaファイルの方で「ball」というシンボルをつくり、リンケージ設定で 「ActionScriptに書き出し」にチェックを入れ、class名に「ball_mc」と 入力したのですが、 asファイルの方でaddChildしても表示されませんでした。 どのように書けば表示されるのでしょうか。 よろしくお願いいたします。
9 :
Now_loading...774KB :2009/04/21(火) 10:57:42 ID:FY83CjoZ
最大公約数を求める関数なんだが、 function getGcd (a:Number, b:Number){ return(a == 0 ? b :arguments.callee(b % a ,a))}; 「?」という演算子ありましたっけ?手元のリファレンス書には 載ってないんですが、、。
if (){}else{} を短くした書き方。
てすと
13 :
Now_loading...774KB :2009/04/22(水) 03:59:26 ID:RrsXfg26
>10,11 遅くなってすまそ。理解しました。ありがとうございます。
>>8 ball_mc でリンゲージ
- as3
var mc:ball_mc =new ball_mc();
addChild(mc);
15 :
Now_loading...774KB :2009/04/22(水) 06:19:17 ID:RrsXfg26
文字列を分割して配列に変換するソースです。(本より) input_txt.addEventListener(KeyboardEvent.KEY_UP, KeyUpHandler); function KeyUpHandler(event:KeyboardEvent):void{ var str:String = input_txt.text; var arr:Array = str.split("/"); result_txt.text = arr.pop(); } でここで、arrを配列にしているのですが、 配列って最初に初期化(new)する必要があるんじゃなかったでしたっけ。
>>15 var arr:Array でarrを配列型に宣言しているのでstr.split("/")を代入することができる。
初期化してもいいけど、絶対必要ではないよ。
上のスクリプトだと
配列型宣言→初期化(任意の値をセットnew()とした場合何も無い値がセットされる)→値代入
この場合だと、せっかく初期化しても直後に値代入で初期化した値が上書きされて初期化が無駄になる。
配列宣言→値代入
にすることで、無駄な処理を省いている。
17 :
Now_loading...774KB :2009/04/22(水) 08:15:09 ID:RrsXfg26
ありがとう。 一般に、配列は初期化しなくても、Arrayデータ型を指定するだけで、 配列になるのですか? それとも、上の場合は特殊な形でそうなったのでしょうか?
>>17 splitは配列を返すからいいの
配列を返すってことは、split関数内でニューしてるって事
こういう風に考えてたんだが…
あ、合ってるよな?
神様教えてください [Embed(source='image.png')] ↑この[]は何を意味しているんですか?
eclipse+mtasc+flashoutでActionScript2.0の勉強をしています イベントのデリゲートなのですが、Webのサンプルを実行しても 『type error Unknown variable Delegate』とエラーが出ます importが上手くいってないようで、import文にでたらめな文字列を突っ込んでもコンパイルは通っています やはり読み込めていないのでしょうか? コンパイルの追加パラメタは 「-version 8 -header 640:480:10」と指定しています どなたかお助け下さいm(_ _)m
21 :
20 :2009/04/22(水) 10:14:42 ID:ISK4rGJW
20です。ソースです import mx.utils.Delegate; class Test extends MovieClip { private var mc; //フレームレート private var fps:Number = 30; static function main() { var Test:Test=new Test(_root); } public function Test (mc:MovieClip) { this.mc = mc; //初期設定 init (); } private function init () { var ball:MovieClip = mc.attachMovie ("ball", "ball", 0); //マウスを追うメソッドをsetIntervalに登録.ここでエラー!!! setInterval(Delegate.create (ball, step), 1000 / fps); } private function step () { this._x += (_root._xmouse - this._x) * 0.1; this._y += (_root._ymouse - this._y) * 0.1; } }
>>19 Flex等で埋め込みアセットクラスみたいな仕組みを使う時の書き方
それだと「image.png」を読み込んで「sourceクラス」として扱うようにしてる
Flashでいうと[ライブラリ]に画像を読み込むのと同じような物
>>22 なるほど
スッキリしました
ありがとうございます
24 :
20 :2009/04/22(水) 12:26:54 ID:ISK4rGJW
20です 自己レスですが・・・ import mx.utils.Delegate; これって、mtascの構成フォルダ(C:\Flash\MTASC\mtasc-1.14\std8)に mx(ライブラリ)フォルダが必要なんですね mxのソース(ライブラリ)の配布って行われてないんでしょうか? FLEXとか買わないとダメなんでしょうか(TдT)
AS2/Flash8で実体参照について質問です。 ダイナミックテキストで「cafe」とかで使うアクセント付き「e」を、 実体参照の「é」で表示することができません。 name = "café"; System.useCodepage = true; this.text1.html = true; this.text1.htmlText = name; こんな感じでhtmlで出力してもダメでした。 数値参照の「é」を使ってもダメでした。 ('は表示できました) どうにかして表示させたいのですが、なにか良い手はないでしょうか?
数値文字参照でだめならだめじゃね。 フォントを変えてどうにかなればそれでいいのかな。 256までは対応してると思ってたけどだめなのかー。
0-127までっぽい
28 :
Now_loading...774KB :2009/04/22(水) 23:53:14 ID:RrsXfg26
>>18 遅くなりました。ありがとう。すっきりすたです。
29 :
Now_loading...774KB :2009/04/23(木) 01:18:57 ID:yUCfVRXE
returnってメソッドじゃなかったんですね。 知らなかった、、、。
30 :
Now_loading...774KB :2009/04/23(木) 07:13:20 ID:yUCfVRXE
すいません連投です。。 配列から要素を検索するスクリプトです。 var arr:Array = [123,456,"abc",789,"def",456,"ghi"]; var elem:uint = 456; arr_txt.text = arr.toString(); elem_txt.text = elem.toString(); result1_txt.text = arr.indexOf(elem).toString(); :::::::::: で、以下の部分のシンタックスですが、 result1_txt.text = arr.indexOf(elem).toString(); indexOf(elem).toString()とメソッドが続く事に激しく違和感あるのです。 これは、indexOf()の戻り値、つまり「1」に対してtoString()のコマンドが 働いていると思っていいですか?
32 :
Now_loading...774KB :2009/04/24(金) 02:07:30 ID:aDl4CPFT
>31さん ありがとお。 戻り値のあるメソッドは、そのまま戻り値を表すオブジェクトに なることもあるっ。と思ってよいですか? あ、云いたい事うまくかけない。意味不明なら無視でいいです。
変数に一旦入れるか、入れずに値に直接メソッドをかますか、の違いのことかな 違和感あるなら書き方を変えればいいんじゃない? 可読性が高まる代わりに、冗長になるから無駄な変数が増える var num:int = arr.indexOf(elem); result1_txt.text = num.toString(); てか、やりたいのはこうじゃないの? var num:int = arr.indexOf(elem); result1_txt.text = arr[num].toString();
34 :
Now_loading...774KB :2009/04/24(金) 03:11:05 ID:aDl4CPFT
(☆▽-)キラーン var num:int = arr.indexOf(elem); result1_txt.text = arr[num].toString(); これ分かりやすいですね。ありがとお。 >可読性が高まる代わりに、冗長になるから無駄な変数が増える なるほどです。 無駄な変数が増えないという利点があったんですね。 えっと。何で書き込んだのかというとスクリプト勉強はじめて まだ間もないので、変な構文と出あうと気になって気になって。 今回はメソッドが2回続くのでなんだろう?なんだろう? と思って質問したところでした。 よくわかりました。ありがとうございます。
35 :
Now_loading...774KB :2009/04/24(金) 04:14:39 ID:fx9BcyFu
(ASそのものの質問では無いのですが) ここ3ヶ月ほどの間に、このスレでXML利用の質問が多くなったような気が しますが、FlashでXMLを使う利点が今一つ分かりません。 ググっても、「何でわざわざXMLやねん?」という感じです。 任意の内容のテキストファイルで属性を管理・参照してもいいような・・・ (例えば、List.txtでファイル名を参照する) ぶっちゃけ、Flash(SWF)+XMLで皆さんは何をやってるんですか?
xmlはきちんとタグで管理されてて、構造化されてるから管理、アクセスがしやすい xmlで書けば、xml対応しているすべてのアプリケーションで簡単に扱うことができるから、連携がしやすい とか AS3になってE4Xに準拠してxmlの扱いがすごい簡単になったってのもある 単なるテキストの場合、何番目に何があるっていうのを覚えてないといけないし、全部でひとつのStringだからそれをまた解析するのもめんどい xmlならこのノード名のやつを全部とってこいとかプログラムで簡単に書けるからコードが短くなる どんなに中身が多くなろうがプログラムで扱うときには気にしないでいい また逆に吐き出すのも簡単
>>35 var xml:XML = ...
for each(var o:Object in xml.item ){
trace(o.title);
trace(o.caption);
}
携帯で書いてるから激しく間違えてるかもしれんが、ノードは超便利。
クラスやIDなどもの指定出来るので、CMSと連動などでも必須の機能。
ただ、今時少ないと思うが、大きなXMLを読む時に文字コードをShiftJiSなどにしていたら、読み込まない時があるから気をつけて
XMLは動的なコンテンツの生成のためじゃない。 運用環境にFlashオーサリングツール入ってるわけじゃないし、 サーバサイドの言語から生成するのもページ数が多いとAMFだと手間がかかるとかそこらへんじゃない
>>36-39 ありがとうございます。
そういえば、AS3.0のコンテナChild構造はXMLの階層構造にそっくりですね。
AS2 CS3 なのですが、 場面に応じてBGMを切り替えるFlashを作成しているのですが、 複数の外部MP3ファイルを、裏で先行読み込みをしておくことはできるのでしょうか? sound.loadSound("xxx.mp3",false) とイベントサウンドとして扱いたいので、 キャッシュさせておきたいということです。 どなたかアドバイスいただけませんでしょうか? よろしくお願いします。
>>41 起動時に読み込ませればいいだけです。 多くのファイルを同時に読み込ませると同一サーバ接続数の制限に
ぶつかってしまうので1つのファイルが読み終わったら次のファイルの読み込みを開始するようにするとベストです。
>>42 同一サーバ接続数というのも考慮しなくてはいけないのですね。
1つずつ読み込むという方法を試してみます。
ありがとうございました!
44 :
Now_loading...774KB :2009/04/26(日) 00:55:44 ID:UoeE90kM
WinXPでFlashCS3(AS3.0)です。 XMLでノードの内容を配列に格納する方法で悩んでいます。下記は今回使っている テスト用XML(外部XML)です。 ※タグ記号<>はレス欄に書き込むと消えてしまうので、[ ]で代用しています。 [vegie] [item id="1"]tomato[/item] [item id="2"]carrot[/item] [item id="3"]eggplant[/item] [item id="4"]potato[/item] [/vegie] var xmlObj:XML; として、 var node_item:XMLList=xmlObj["item"]; trace (node_item.children()); とすると、tomatocarroteggplantpotato のように区切れ無く出力され、 trace (node_item.child(0));でも同じでした。 理想は、配列myArray[0]がtomato,myArray[2]がcarrot,・・・ の状態です。 どうしたら良いでしょうか?
45 :
Now_loading...774KB :2009/04/26(日) 01:12:08 ID:zeaUakA/
>>44 trace (node_item.child(0));
を
trace (node_item.child(0)[0]);
とするとtomatoと出力されるはずです。
node_item.child(0) の中身は配列になってますが、traceで出力すると区切り文字がないために
”繋がっているように見える” だけです。
48 :
Now_loading...774KB :2009/04/26(日) 12:37:39 ID:NboLRnYY
49 :
Now_loading...774KB :2009/04/26(日) 13:57:32 ID:T2r1P/Jp
ActionScript2.0です サムネイル画像を複数ロードして 一個一個のサムネ画像はサイズがバラバラな場合 きれいに並べるにはどうしたらいいでしょうか。 現在、 for (i=0; i<サムネ枚数; i++) { サムネ画像._x = i*100; } という風にして並べています。 これだと、サムネ画像のサイズに関係なく 100pxごとに横にずれて並べられるので サムネ画像の間隔がバラバラになってしまいます。 キレイに並べるために サムネ画像サイズをサムネ画像._xに加算していくのかなーと 思ったんですが、よくわかりません。 どなたか教えて下さい! よろしくお願いします。
>>48 as3.0を勉強するかas2.0で書きましょう。
>>49 画像のロードが完了したときのイベントを利用して位置を調整しましょう。
>>48 AS3で作りたいなら、aAS3で書かれてるスクリプトを参考にしろよw
他のスレに書いてしまったんですが、
こっちのほうがいいかもしれないと思ったので書きます
http://www.flashiroha.com/script/viewer/as44.html このページのアルバムの画像サイズと枚数を変えて作成しているのですが、
サムネイルを押してもエラーでうまく写真が読み込まれません
写真が30枚なので<=9を<=30に換え
30、31行目もサムネイルのサイズ _x = px-96;_y = py-72;に換えたのですが
うまく動きません、どのあたりをいじればうまくいきますか?
インスタンス名などは合わせてあります。
あと、backはどのレイヤーにおけばいいんでしょうか?
そして、サムネイルに相当する写真を同じフォルダに置くというのは
元の画像ですか?それともムービークリップでしょうか?
教えてください
53 :
Now_loading...774KB :2009/04/26(日) 20:39:24 ID:sO4L+xoh
Flash CS4(トライアル)、AS2.0、WinXPという環境です サーバは@niftyです @niftyの場合、CGI実行フォルダが別ドメインの『cgi-bin』と決め打ちされています www.hogehoge/hoge/hoge.swfのActionScriptで、 www.hogehoge2/hoge2/hoge2.cgiを実行させたいのですが、 このように、cgiファイルとswfファイルが併置出来ない環境で、 方法はありますでしょうか? System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.send("www.hogehoge2/hoge2/hoge2.cgi", "_top", "POST"); などと書いても上手くいってないようなのですが・・・
54 :
Now_loading...774KB :2009/04/26(日) 23:33:54 ID:y+sqDhM+
WinXPでFlashCS3(AS3.0)です。 XMLの属性の扱いで質問です
外部XMLを読み込み、その要素内容を読み取ろうとすると、ある属性が入っていることで不可になります。
以下は使用したXMLです(投稿CGIの都合上、タグ記号を<>→[ ]にしています)。
[?xml version="1.0" encoding="UTF-8" ?]
[vegie]
[metadata]
[lom xmlns="
http://www "] // ←←
[general]
[title]
[langstring xml:lang="x-none"]value0[/langstring]
[/title]
[/general]
[/lom]
[/metadata]
[/vegie]
ASではLoaderで読み取ったXMLを var xmlObj:XML = new XML(loadEvt.target.data);として、
下記で出力を試みました。
trace ("xmlObj.metadata= "+xmlObj.metadata);
trace ("xmlObj..lom= "+xmlObj..lom);//孫の意味で「..」
このとき、矢印の xmlns="
http://www " がある場合には trace ("xmlObj..lom= "+xmlObj..lom);
が何も出ず、単に [lom] ならこの出力が得られます。
※実際のデータからはxmlns="
http://www "を外すことはできません。
どうしたら良いでしょうか?
55 :
Now_loading...774KB :2009/04/27(月) 02:46:56 ID:GMkT7654
オブジェクトに入っている全てのプロパティを調べるメソッドはありますか?
56 :
48 :2009/04/27(月) 02:48:17 ID:fjUOpZN9
>>50 はい。AS3.0読んでみます。
>>51 検索したんですがAS3.0で書かれているのはリファレンスしか見つからなかったので。
頭が悪いので、もう少し実戦的でないと理解できないんです。
インクリメントなどの超基本はわかっているつもりなんですが、かといっていきなり専用関数とか説明されても
それをどう使ったらいいのか、というのが見えてこなくて。
58 :
Now_loading...774KB :2009/04/27(月) 04:24:53 ID:imbqRtuJ
>56 場所を示す_x,_yのプロパティの表記法が3.0になって変わってます。 myShip._x myShip._y ↓ myShip.x myShip.y とソースを見たら、イベントまであるので、、、。 イベント処理の考え方は2.0と3.0は全然違いますので。 簡単な修正で済みそうでありません。 勉強するなら、他の人の云うように3.0用のソースで学習したほうがいいです。
59 :
Now_loading...774KB :2009/04/27(月) 05:43:28 ID:dp6j2YFz
すいません。 アクセサメソッドの利点ですが、 「メソッドの形をとることで、クラス側のプロパティをいじることなく FLASH側で値を参照することができる」 ということでOKですか?
>>59 まあ正解。mc.x=50;でも、実質「関数xに50を代入してmcの位置を調整する」だから。
あと、固有のプロパティを作れる点も。
61 :
54 :2009/04/27(月) 06:30:14 ID:mla2TKyZ
Webや本を見直して、名前空間の扱い(xmlns)に問題があることが分かりましたが、
そこから先に進みません。
langstring要素の内容を取得するため、
var ns0:Namespace = new Namespace("
http://www ");
trace("xmlObj..lom= "+xmlObj..lom.ns0::langstring);
としましたが、何も現れません。
また、default xml namespace = new Namespace("
http://www "); も見つけましたが
この使い方が分かりません。
どなたかアドバイス願います。
名前空間指定したら 名前空間で修飾したノードネーム使うんじゃないの多分。
アクセサメソッドは クラス内部のデータとそのインタフェース(ユーザーがデータにアクセス する方法)を分離するという OOPの考え方から来ている。 例えば仕様が変更されて例えば色の情報をHSVに返すメソッドが 欲しいとなった時に、データはRGBだとしても、アクセサメソッドで HSVに変更して返してやるメソッドを実装すればデータそのものは 変更しなくても存在しなくても済むというような事ができる。
逆もあるよね。 内部的にはRGBでも保持していたのを、内部的に仕様変更しても、 アクセサメソッドを修正すれば、外部的に公開していた、function get rgb はそのまま使わせる事が可能とか。
>>61 決め打ちなら普通にlangstyleタグ引っ張ってくればいいんじゃね?
var ns:Namespace = new Namespace("
http://www ")
trace(xmlObj..ns::langstring)
あっ勘違いした 名前空間の修飾はもう使ってたのか テキストノードにアクセスしたいのに、 テキストノードじゃなくて親のノードにアクセスしてるとか そういう系のミスありそうだけど、違うかな。 ns::langstring.toString() を呼んでみるとか
67 :
48 :2009/04/27(月) 14:56:19 ID:fjUOpZN9
>>57 ありがとうございます。そことリファレンス見て勉強してみます。
>>58 イベントのほうも適当に書き換えてみたら動きました。
ただ毎回これだけ苦労するのはきついので上のサイトでまず勉強してみます。
ありがとうございました。
68 :
54 :2009/04/27(月) 15:59:29 ID:SRcWpbkc
>>62 >>65-66 さんきゅうです。
やってみます。
独り言: 新しい取引先の担当者が日本語が不自由な件(助詞の使いかた間違いまくりw)
70 :
Now_loading...774KB :2009/04/28(火) 04:13:23 ID:3jH4l2Lv
二乗って「^2」つかえないんだっけ?
71 :
Now_loading...774KB :2009/04/28(火) 06:56:37 ID:3jH4l2Lv
72 :
71 :2009/04/28(火) 08:01:59 ID:3jH4l2Lv
74 :
71 :2009/04/28(火) 10:08:27 ID:3jH4l2Lv
いろんな本の紹介ありがとうです。 でも、とりあえずcos sinが合っているのか知りたいので、、。
高校1年レベルの知識でしょそれって。 電卓でも計算できるし、ここで聞かなくても分かると思うけど。
76 :
71 :2009/04/28(火) 11:08:49 ID:3jH4l2Lv
いや。そおなんだけど。 y軸が下方に+をとるみたいに、 Mathオブジェクトのメソッドだと、これで正しい理由があるのかも知れないかも と思って。
>>73 この意見は的外れすぎる 評判良くないって星の数同じじゃないかw
「入門」に関して言えば間違いなく前者の本の方がわかりやすい
『コリンには悪いがこっちの方がわかりやすい』と評された本だぜ
なんでC言語なんかやらなきゃならんのだ わけわからなすぎるw
78 :
71 :2009/04/29(水) 00:32:18 ID:qPzjWqQu
オライリーに質問だしてみた。お騒がせしてすいませんでした。 この本については、悪くはないって思ってます。 ただ、翻訳書なので、表現とか分かりにくいところもあったりも しましたけど。
原本と見比べると、違いが多すぎる
Math.cos(50) = 0.964966028 は正しい。 だが、50°とは何の関係も無いのです。 とか言うことならやだなw。
C言語は様々な言語に影響与えていて どの言語を使うにしても役に立つってのと、 Cの仕様は凄く小さくてK&Rって本一冊でほぼ網羅できる ぐらいなので、プログラミングの勘所が把握しやすいかなと思って。 自分がCから初めて他の言語も色々触ってActionScriptも触るように なったからそう思うだけかも。
82 :
71 :2009/04/29(水) 01:14:58 ID:qPzjWqQu
そっか。ラジアンだと0.964966028か。 だったら、なおさらあの図は何?ってことなのだね。 なんとなく本の図の誤りっていうことが分かってきた。 ありがとう。
そういう事か、ごめん。ちゃんと教えてあげなくて。 ていうか最近AS3あんまり触ってなかったから、俺もど忘れしてた。 Math.cos(angle)の引数はラジアンに変換して与えないとダメだよ。
84 :
71 :2009/04/29(水) 01:34:45 ID:qPzjWqQu
あ、いえありがとうございます。 50ラジアンって何度だよw。って思わずわらってしまいました。 オライリー信用してたんだけどなあ。 オライリーから返事あったら晒します。
85 :
Now_loading...774KB :2009/04/29(水) 02:44:35 ID:InOD15+q
FlashCS3(AS3.0)+WinXP-Proです。 XMLの名前空間で質問です。ボタンクリックで外部XMLを読み込み、これを解析する 最初の段階でトラブってます。 loader.addEventListener (Event.COMPLETE, load_compleated); loader.load (new URLRequest("ims.xml")); //読み込むXMLはims.xml function load_compleated (loadEvt:Event):void { xmlObj = new XML(loadEvt.target.data); trace ("loaded"); //読み込み自体はOK } var ns0:Namespace = new Namespace(名前空間のURI); var node_organization:XMLList=xmlObj..ns0::organization; // これがあるとエラー 読み込んだXMLのorganization要素を取り出したいのですが、上の記述だと名前空間を 適用する行で下記のエラーが出ます。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 今回の記述はボタンにリンケージされたASファイル内に書いています。 問題点はどこでしょうか?
>>85 最後の2行がロード完了前に実行されてるからじゃね?
この2行をfunction load_completedの中に入れてみ。
エラーの行の「..」は書き込みミス?
>>88 へー、そんな記法あるのか
紛らわしくて嫌と思うのは俺が2.0止まりだからかな……
90 :
Now_loading...774KB :2009/04/30(木) 00:24:19 ID:J4cApq/7
MovieClipクラスは、DisplayObjectのクラスを継承しているから MovieClipのオブジェクトに、DisplayObjectのプロパティを指定しても 問題ないですよね。 たとえば、transformとか。
スライドショーみたいなもんを作ってるんですが MC1, MC2 ,MC3にそれぞれ画像データを読み込んでいて それぞれのMC番号に付随したDepthに格納しています。 こいつらをスライドさせながら画像を表示させようと考えた時に displayMCという物を作って、これのDepthを4に設定しています。 それで、時間がくると displayMC にMC1 2 3 を順番に代入しつつ スライドをさせたいと思っているのですが上手くいきません。 displayMC に他のMCのコピー代入するにはどうすればいいのでしょうか。 よろしくお願いします・・・。
92 :
91 :2009/04/30(木) 13:16:17 ID:b+Td89CF
環境を書いていませんでした!申し訳ありません。 AS2のXP環境です^^;
>>91 うまくいかないといわれても、具体的な構造やASがわからんので推測だけ。
外部画像を読み込んだMCを、その外部画像ごと複製しようとしてるのだとしたら
それは出来ない。
BitmapDataを使って画像の複製を作ることはできる。
あるいは、swapDepthでそれぞれのMCの深度を変更することはできる。
94 :
91 :2009/04/30(木) 13:34:08 ID:b+Td89CF
>>93 さん
なるほどそれだ!!
swapDepthも考えたのですが、MC1,2,3はMC配列で管理してるので
配列の番号とdepthはそろえたいナーと思っていたので表示用のMCを作るという考えに至りました。
95 :
91 :2009/04/30(木) 13:52:22 ID:b+Td89CF
>>93 さん
調べてみるとBitmapのロードは少々手間がかかるし
メモリの関係上どうかと思ったので、やはり深度swapで解決しようとと思います・・・。
どうもありがとうございました。
AS見せないやつってなんなの?
なんで?
おっぱい見せないバレー部の話ってなんなの?
プログラムメインで使う人にとっては ベクター画像の配置とフォントの設定ぐらいにしか使わない Flashの7万って価格はぼったくりだよな。 俺は絶対個人では買わないけど
WindowsだとHPが無料で配布してる SWFファイルのメンテナンスチェックツールみたいなので AS3のファイルも逆コンパイルして中身見られるらしいけど。 自分MacだからAS2の逆コンパイラしか使ったことね。
>>99 元々プログラムメインで使う人をターゲットにしてるわけじゃないし
ASだけゴリゴリやりたいならFlexSDKで良いわけだし
でもそうじゃない人にとっても高いと思うけどな
プロ用ソフトは 「うちのソフトで儲けるんだから、分け前ちょうだいね」 って価格設定ってことだ
DisplayObjectをrotationプロパティ代入で回転させてるんですが その回転の中心点ってどうやって変えられるんでしょうか? AS3.0だけでやってます。
泥臭いやり方だとラップして中身だけ移動? 自分もスマートな方法知りたい
108 :
Now_loading...774KB :2009/05/02(土) 22:04:22 ID:9Bx+IPjL
Loader で読み込まれた子SWFのroot.parent.parent で
親SWFにアクセスできるらしいんですが、
(
http://hakuhin.hp.infoseek.co.jp/main/as3/loader.html#LOADER_01 )
//テキストフィールド tex がある親SWF
import flash.display.Loader;
import flash.net.URLRequest
function test1(){
this.tex.text="aaa";
}
var load_obj : Loader = new Loader();
var url:URLRequest = new URLRequest("loaderAS2.swf");
load_obj.load(url);
this.addChild(load_obj);
//子SWF
root.parent.parent.test1();
と書いてもテキストフィールドに変化がありません。
描き方のどこが問題なのか教えていただきたいのと、
どこかに子SWFから親SWFにアクセスしているサンプルがあれば
参考にしたいのですが、どこかにないでしょうか。
よろしくお願いします。
actionscript3で、top・about・galleryの3ページのフラッシュサイト風な物を作ってみたのですが 例えば、aboutのボタンを押してaboutページが表示され、次にgalleryのボタンを押してaboutページが消えgalleryページが表示され またaboutボタンを押してgalleryページが消えて・・・と、aboutとgalleryページを交互に表示・消去させて、使用メモリーを調べてみると 交互に表示してる間に少し減るのですが、移動先のページが表示されると減る量以上にグンと数値が上がってしまい 交互表示を続けていくとメモリーはどんどん増えていき、動きがカクカクしてきてしまいます これはページを消す瞬間に行っている、ページ表示時に作ったSprite等を消す処理がちゃんと指定できて無いのが原因なのでしょうか? それとも、こうしてずっと交互にページ移動していくとメモリーが増え続けるのは仕方ないのでしょうか?
111 :
Now_loading...774KB :2009/05/03(日) 00:01:42 ID:uHFr8dO2
>110 イベントリスナーが残っているのかな?
>>109 loadを呼ぶ前にaddChildしてないと、子が処理されるときに親にまだアクセスできないんじゃないかな?
115 :
110 :2009/05/03(日) 09:53:45 ID:4+GDGpD6
>>111-113 ありがとうございます、Spriteよりもイベントリスナーが外れたかに注意した方がいいんですね
結局色々試してみていますが、未だに解決できていませんorz
企業のフラッシュサイトとか、しっかりと作られた物ならこうしたページ移動を交互にやってもメモリーが増え続けたりはしないものなのでしょうか?
116 :
111 :2009/05/03(日) 20:58:00 ID:+TKuHO+z
例えば、イベントリスナーを設置するとき 通常は下のようにかくけど eventTrget.addEventListener(EventType.EventName, eventResponse) ↓ 次のように引数を追加すればいいと聞いたことがある。 eventTrget.addEventListener(EventType.EventName, eventResponse, false, 0 ,true) "false, 0 ,true"を追加するだけ。 解決するか分からないけど試してみてください。 詳しくは「ガベージコレクション」をぐぐってくだされ。
117 :
111 :2009/05/03(日) 21:16:33 ID:+TKuHO+z
上の対処的な解決策とは別に、 根本的な解決として、不要になったリスナーは removeEventListener()メソッドで削除しないとメモリに残るよ。 でいいのかな?詳しい人、説明求む。
118 :
110 :2009/05/04(月) 10:42:21 ID:Cv2PabyB
>>116-117 ありがとうございます、ガベージコレクションについてももっと調べて勉強してみます
それ程の数のイベントリスナーを設定していないのでremoveChildも出来ているとは思うのですが・・・
ただ、自分の中でハッキリさせたいのが、フラッシュサイトを作り
>>110 のようなページ交互表示を続けた場合
多少なりともメモリ使用量が増えていき、次第に動作がカクカクになってしまうのは”異常”なのでしょうか
(自分の作ったサイトのような、2,3回ページを交互表示しただけでカクカクになるのは既に異常だと思いますが・・・)
しっかりと作られた”正常”なサイトなら、ページ交互表示を幾ら続けてもメモリ使用量の増減バランスがとれて、動きがカクカクになる事など有り得ないものなのでしょうか?
企業のサイトでページ交互表示を繰り返してみても動きがカクカクにならないような気がするもので、これが標準というか正常な動作なのかなと
119 :
Now_loading...774KB :2009/05/04(月) 11:10:08 ID:eelbSKOs
removeChild() とあわせて、 removeEventListener() も設定するんよ。 >次第に動作がカクカクになってしまうのは”異常”なのでしょうか swfをみないと分からないなあ。でも変ね。 オブジェクトや、イベントリスナーを、for や whileを 使って繰り返し生成しているのならありえるかも。
120 :
Now_loading...774KB :2009/05/04(月) 11:48:25 ID:eelbSKOs
原因は三つのうちのどれか 1.イベントリスナーが残っている。 2.オブジェクトが実は消えてない。 3.ページ生成時に、function関数で別のオブジェクトを作っている。ギャラリー画像とか。 trace(my_sprite.numChilderen) (my_spriteは親のオブジェクトコンテナ) で子の表示オブジェクトを数えられるのでチェックするといいよ。
121 :
8 :2009/05/04(月) 13:08:28 ID:hVI+EHup
>>14 お返事が遅くなりまして大変
申し訳ありませんでした。
うまく表示できました!!
どうもありがとうございます。
122 :
Now_loading...774KB :2009/05/04(月) 13:19:17 ID:lfTMP4SL
ニコニコムービーメーカーでswfをアップロードしようとしたら 「ビットレートを超えています。アップロードを中止します」って出るんですが ビットレートを下げて(?)うpできるようにするにはどうしたらいいんですか。
動画のフレーム数に対してデータが重すぎるとかじゃなかったっけ? 動画の最後に空のフレーム追加してフレーム数伸ばしてみては?
124 :
Now_loading...774KB :2009/05/04(月) 15:57:14 ID:lfTMP4SL
>>123 フレームってよくわかんないけどやってみる。
またくる。ありがとう。
>>112 >>114 教えていただいたURLのスクリプトを使ってみたところ、
ちゃんとアクセスできました。
ありがとうございます。
>>124 てっきりうpしようとしてるのは自作のswfだと思ってたんだがひょっとして
他人のswfファイル丸上げしようとしてるとか?
だとしたらあなたがFlshアニメが制作できるソフト持ってないと私の知識では無理。
127 :
Now_loading...774KB :2009/05/05(火) 00:34:49 ID:6WOU4nsx
もともとwebデザイナーなんだが、 アクションスクリプトは難しいなあ。 人が作ったサンプルを解析して、修正することはできるけど。 0から自由につくりあげることは、なかなかできない。 もっと勉強が必要なんだろうけど、先が見えないよ。 そもそもデザイナーはデザインだけをやって、スクリプトは プログラマに任せたほうがいいのか。 そのほうがいいように思えてきた。
AS3.0 で ShaderJob を start(true); でループでまわして負荷テストしようと思ったらできませんですた。 ためしに毎ループで new ShaderJob(); してみたところ、できるようになりました。 それで思ったのですが、ShaderJob は再利用できないものなんでしょうか??
デザイナーがHPに動きをつけたいなら
まずJavaScriptとJQueryをやってみるのが良いんじゃないかな。
今までに覚えたXHTMLやCSSの知識はそのまま使えるし、
JavaScriptが動かない環境やSEOの事で悩まなくても済むし。
これは最近みつけたJavaScriptのスクロール使った面白いサイト
http://www.sursly.com/
>>127 難しい時期だよな。
ただそういう人は腐るほど居る
バリバリのデザイナーで、お客さんの目を奪う能力を手に入れるか
どんな仕事がきても、必ず形にできる人になるか
一皮剥けたいなら、どちらかを選ぶべきだな
因みに俺は…
まだ悩んでる
132 :
Now_loading...774KB :2009/05/05(火) 17:14:16 ID:6WOU4nsx
そうなの?サンプルから作るのは邪道かと思ってた。 (いや。いつも雑誌とかサンプルのソースを使ってるんだけど。)
昔はそうだったけど今はサンプル使ってる人も多いみたいよ。 ただサンプル使うにしても流れを理解してて エラー対応とかは完璧に出来るってことが条件
サンプルというか、ライブラリを使って作る癖を付けた方が良いよ なまじ勉強して全部1から作ろうとする人はおっそいし不正確になりがち
>>127 同じASでもAS2.0の方が敷居は低い。というか、3.0に比べて文法が
厳密じゃないから多少ワガママな表記でも動作する。
特に、『ボタンを押してX方向にMC1〜MC10を移動』なんて単純な動作や、
その場限りの作品,あるいは分業を必要としない場合にはAS2.0が有効だと思う。
136 :
Now_loading...774KB :2009/05/06(水) 04:55:27 ID:tNDrvDac
Google Maps API for Flashで、地図の読み込み完了を知る方法(イベント?)ってありますか? サンプルに載っているやり方のままだと、マップロード中はグレーの画像で表示されてしまいますが、 全部読み込んでから表示したいのです。isLoaded()メソッドとか試してみましたが違いました;
137 :
Now_loading...774KB :2009/05/06(水) 13:20:56 ID:L6Rl12Zu
matrixクラスについてなんだけど。 単に、表示オブジェクトに、移動やサイズ、回転などのプロパティを追加させただけに 過ぎないと思うんだが。 なんで、これが3×3の行列と関係あるんだ? と数学に疎い僕が云ってみる。
>>137 個々に指定する分にはそれぞれのプロパティを指定すればいいけど、
例えば斜体にするような場合は、既存のプロパティだけでは実現できないから
Matrixを使う、ってどこかで見た気がします
>>137 いくつかのベクトルを合成した結果を得たい時には、行列にしておいてそれを計算すると得られるのよ
Matrixの情報は、算数とか数学で習ったベクトル矢印みたいなもんだと考えておけばおk
それを何パターン化用意しておいて、あとは組み合わせるだけ、って使い方ができるわけね
こういう使い方と、行列の演算の相性が良いのよ
ゼロから学ぶ線形代数 って本が分かりやすかった気がする。 でも分かった気になっただけで、ほとんど忘れてしまった。
>>137 移動やら拡縮やら回転を
より汎用的に表現すると行列を使った方が簡潔に表せるのよ。
そうやって専門的になりすぎて一般人のAS離れがおこって、
わかる人だけが使える(=それでメシを食ってける人だけが使える)ものに
なっちゃってるわけだ。
でもま、高校数学をちゃんとやっとけばいいだけの話。
>>141 でも、その高校の数学自体がなあ・・・
今の高校生は理系でも統計学を習わないらしい。
標準偏差を知らない理系って何だよw
MacromediaがAdobeに買われてFlexが出たあたりから、 簡単な事はJavaScriptでやってくれ、AdobeはRIAを押して行くんだって感じだよね。 今度、PhotoShopからFlexにコンバートするための専用ソフトも出すみたいだし、 デザイナーはFlexは必要ない機能がてんこ盛りで重たいから敬遠してるのに どうなる事やら。
MAP_READYじゃだめなんかな
146 :
136 :2009/05/07(木) 05:00:05 ID:ZqYBFF6z
MAP_READYだとあくまで準備完了で、実際のローディングは別なんですよね… 非同期だから当たり前なのかもしれないけれど、読み込み完了前(グレー画面)は Mapオブジェクトを.visible = falseにしておいて、完了してから表示させたいんです マップ生成 → 準備完了(グレー画面) → 地図の画像をすべて読み込み完了 new Map() MAP_READY ↑ここを検知したい↑
147 :
136 :2009/05/07(木) 05:03:07 ID:ZqYBFF6z
もちろん時間をおけばいずれローディングはされるんですけど、確実じゃないし、 そういうイベントがあるかどうかわからないので、試しに一度BitmapDataにdrawして グレー画面が無いか画像を捜査しようかとおもったけど、クロスドメイン関係で出来ないっぽい…
148 :
Now_loading...774KB :2009/05/07(木) 07:00:04 ID:WNuXK8GS
AS勉強間もないです。すいません。 以下のような関数がありました。(無駄な要素をはしょってます。) mcA.addEventListener(Event.ENTER_FRAME,hoge); function hoge(evt:Event):void{ mcB=mcA if(mcA.y<100); {mcB.y++ }else{ mcB.y=0; } mcA=mcB } これスクロールを永遠とさせるメソッドなのですが、 この関数を理解するまですごい時間が掛かりました。 @最初に変数mcBにmcAを代入して、 AmcAの条件(yの値が100より小さいか)に併せてmcBをスクロール・移動させる。 Bスクロールが終わったら反対に 変数mcAにmcBを代入する。 Cこの関数を繰り返す。 こういったように、繰り返し関数の中で 最初同じムービークリップの変数を与えて、与えられた変数を変化させて 差分を元のムービークリップに返す(代入)という。 やり方はよくあるのでしょうか? 見慣れないやり方で、ちょっと驚いたので、、。 よろしくお願いします。
>>146 うーんGoogleMapあんまり使ったことないからわからんなぁ
でも現実問題としてマップは何十枚何百枚とロードする可能性があるわけだから、
そのうちのひとつでもロードできないと表示されないってのは問題があるんじゃないかな
>>148 そんなやりかた普通はしないな
変数名からしてMovieClipかSpriteだろうから多分その代入意味ない
mcAのまま普通にやったほうがいいと思うよ
>>148 関係ないけど、その場合は「永遠と」じゃなくて、「延々と」だと思うっす
代入はコピーでなく参照で行われるから mcB.y++したら、mcA.y++やるのと同じ事じゃね。 なんかMovieClipだと特別な現象とか起きるんだっけ。
152 :
Now_loading...774KB :2009/05/07(木) 22:10:47 ID:WNuXK8GS
説明不足ですいません。はしょっていない、 元々のソースをそのまま貼り付けます。 代入がすごく重要な役割をしているようです。 mc は、ライブラリにある高さ780pxある画像。 それをscrollRectプロパティで200pxの表示にさせるという前提条件が ありました。 var nDefaultHeight:Number = mc.height; mc.scrollRect = new Rectangle(0,0,200,180); mc.addEventListener(Event.ENTER_FRAME,mcEnterFrameHandler); function mcEnterFrameHandler(evt:Event):void{ var theScrollRect = mc.scrollRect; if (mc.scrollRect.y < nDefaultHeight -180){ theScrollRect.y++; }else{ theScrollRect.y = 0; } mc.scrollRect = theScrollRect; }
>>152 scrollRectは、参照してるRectangleを返すんじゃなくて、「参照してるRectangleの複製」を返すんじゃなかったかな?
DisplayObject.transform.matrixとかもそうだけど、AS3.0にはその手のプロパティがいくつかあるはず。
trace(mc.scrollRect == mc.scrollRect)
もfalseになると思うよ。
だからその手のプロパティの持ってる情報を更新したい場合には、
いったん複製を取り出す→複製の値を更新→複製を代入
という流れでコードを書く必要があるのよ。
「値をセットしたタイミングではじめて更新処理が行われる」みたいに考えてもいいかもね。
たぶん、そもそも代入時のsetterで、クローンした物を保持するような感じになってんじゃないかな?
154 :
Now_loading...774KB :2009/05/08(金) 12:04:40 ID:L5uwNZA6
質問です。join関数がうまく動きません。 ご教授お願いいます。 var _str:String = "aaabccdeeff"; var _search_str:String = "b"; var _replace_str:String = "x"; var strArray:Array = _str.split(_search_str); strArray.join(_replace_str); trace(strArray.toString()); 出力aaa,ccdeeff
>>154 それは
trace(strArray.join(_replace_str));
でいいんじゃないの?
joinは元の配列を文字列にするわけじゃなくて、元の配列をベースにして作成した文字列を返すわけだから
156 :
Now_loading...774KB :2009/05/08(金) 13:09:55 ID:L5uwNZA6
>>155 ありがとうございます。誤解していました。
AS3.0のVectorで二次元配列はできませんか。 Arrayでは var a:Array = new Array(); a[0] = new Array(); で出来ましたが・・・ いろいろ試行錯誤して var a:Vector.<Vector.<uint>> = new Vector<new Vector.<uint>(5)>(5); とかやってみたんですができませんでした。
a[0] = new Vector() はやっぱり出来なかった?
AS3, flex3です。 flash パッケージ内のクラスのソースを見る事ってできますか? mxパッケージのソースならSDKの中にあったのですが、 flash.text.TextFieldなどのソースは公開されてないのでしょうか。
>>157 var myVector1:Vector.<Vector.<uint>> = new Vector.<Vector.<uint>>(2,false);
myVector1[0] = new Vector.<uint>(2,false);
myVector1[1] = new Vector.<uint>(2,false);
myVector1[0][0]=10;
myVector1[0][1]=10;
myVector1[1][0]=10;
myVector1[1][1]=10;
これで縦2横2のuint型配列ができる。
161 :
Now_loading...774KB :2009/05/09(土) 03:47:22 ID:Rce0QkSn
as3です。 swfと同階層の、外部画像フォルダ(images)から30枚ぐらい画像をswfファイルがLoaderで、読み込む仕様で作っているのですが、 ブラウザのキャッシュフォルダ(temporary internet file)で画像がすべてそのまま残ってしまうのですが、 残させない方法ってないでしょうか。 (完全に防ぐというのは無理かと思いますが、とりあえずキャッシュに残っていないように見えれば大丈夫なのですが。) ASだけで解決しない問題でしょうか。PHPとか絡ませることで対処できますでしょうか。
162 :
157 :2009/05/09(土) 08:31:22 ID:aWkchXX5
163 :
Now_loading...774KB :2009/05/09(土) 08:39:54 ID:xs30KbEh
>>149 ,151,153さん
ありがとうございました。
これはちょっと特別なプロパティのみにあてはまる
組み方なのですね。
もすこし勉強します。ありがとうございました。
164 :
Now_loading...774KB :2009/05/09(土) 08:53:54 ID:eSdAS1Cn
どなたか分かる方がいたら教えて下さい。 AS3でmain.swfに外部のsub.swfを読み込んでいます。 main.swfからsub.swfに記述されている変数は取得できたのですが、 sub.swfからmain.swfに記述している変数を変更ができません。 main.swf var loader:Loader = new Loader(); var load_obj:Object = new Object; var path:String ="sub.swf"; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); loader.load(new URLRequest(path)); function onComplete(evt:Event) { load_obj = loader; loader.removeEventListener(Event.COMPLETE, onComplete); swf_mc.addChild(loader); marker_max = loader.content.MARKER_NUM; } として、sub.swfのMARKER_NUMにはアクセスできます。 sub.swfからmain.swfのmarker_maxへのアクセスがうまくいかないのです。 すみませんが、よろしくお願いします。
165 :
1/3 :2009/05/09(土) 10:52:39 ID:o3o5BuoY
デフォルト引数の省略について質問させてください。 AS3の勉強を始めたのですが、矩形を何度も作っていることに気づき矩形をつくるクラスを作成しました。 Test.asをビルドすると次の2つのエラーが出ました。 ・C:\Test.as(14): col: 44 Error: シンタックスエラー : identifier が comma の前に必要です。 ・C:\Test.as(15): col: 4 Error: シンタックスエラー : rightparen が addChild の前に必要です。 ネットで調べたのですが分かりませんでした(省略するつもりの引数がString型の場合はf("",…)で、というのは発見できたんですが)。 Number型だと(,,…)という形式では引数の省略が出来ないのでしょうか。 Test.asの13行目にコメントアウトしてあるように、引数を省略しなければswfにした時矩形は意図通り描画されていました。 毎回引数を入れるのが手間なのでクラスにしたんですが…。 どなたかご存知の方ご教示願えると大変助かります。 よろしくお願いいたします。 環境 XP Pro SP2 / FlashDeverop3.0.0 RC1 この2ファイルは同一ディレクトリにあります。
166 :
2/3 :2009/05/09(土) 10:53:21 ID:o3o5BuoY
Test.as ----------------------------------- 01| package { 02| import flash.display.Sprite; 03| 04| public class Test extends Sprite 05| { 06| public function Test():void { 07| init(); 08| } 09| private function init():void { 10| callRoundRect(); 11| } 12| private function callRoundRect():void { 13| //var myRR1:MyRoundRect = new MyRoundRect(0,100,100,20,5,5,0xCC55CC); 14| var myRR1:MyRoundRect = new MyRoundRect(,100,,,,,0x11ff55); 15| addChild(myRR1); 16| } 17| } 18| } -----------------------------------
167 :
3/3 :2009/05/09(土) 10:54:27 ID:o3o5BuoY
MyRoundRect.as ----------------------------------- package { import flash.display.Sprite; public class MyRoundRect extends Sprite{ private var MRRposX:Number; private var MRRposY:Number; private var MRRwidth:Number; private var MRRheight:Number; private var MRRellipseWidth:Number; private var MRRellipseHeight:Number; private var color:uint; public function MyRoundRect(posX:Number = 0, posY:Number = 0, width:Number = 100, height:Number = 20, ellipseWidth:Number = 5, ellipseHeight:Number = 5, color:uint = 0x55AA33) :void{ this.MRRposX = posX; this.MRRposY = posY; this.MRRwidth = width; this.MRRheight = height; this.MRRellipseWidth = ellipseWidth; this.MRRellipseHeight = ellipseHeight; this.color = color; init(); } public function init() :void { graphics.beginFill(color); graphics.drawRoundRect(MRRposX, MRRposY, MRRwidth, MRRheight , MRRellipseWidth, MRRellipseHeight); graphics.endFill(); } } }
>>161 URLの後ろに?○○って付けて読み込ませる
○○はランダムな文字列ね
まぁこんなの「読み込み キャッシュ」でググれば出るんだけど
MovieClipを動的に生成する際、絵柄を左右対称に(左右逆に)する事はできませんでしょうか。 以下の様にwidthをマイナスにしたらできるかと思ったんですが結果は変わりませんでした。 var m:MovieClip = new mcHoge(); m.width = -m.width; addChild(m);
>>169 スケールじゃなかったっけ?
scaleX =-1
>>164 MovieClip(root).***
172 :
169 :2009/05/09(土) 16:41:16 ID:aWkchXX5
174 :
Now_loading...774KB :2009/05/09(土) 20:20:09 ID:xs30KbEh
よく変数にデータ型を指定しますよね。 例えば、 var fuck:String = "いらっしゃい" とか。データ型といえば、 String,Number,uint とかですよね。 でも、次のような場合は データ型というよりクラス型です。 var dateObj:Date = new Date(); これって混乱しません? 例えば、クラス型もデータ型も指定できるような 状況ってないんでしょうか? そのときはどちらを優先すればいいのでしょうか?
曜日ごとに絵を変えたいのですが(3フレーム目から月火水木金土日と作っています) 次のようにやっても毎回9フレーム目の日曜日になってしまいます。 どこがおかしいのでしょうか。 AS2、FlashMX利用です。 1フレーム目 aa_settei = new Date(); nichiji = aa_settei.getDay(); 2フレーム目 stop(); if (nichiji == 0) { gotoAndStop(3); } if (nichiji == 1) { gotoAndStop(4); } if (nichiji == 2) { gotoAndStop(5); } if (nichiji == 3) { gotoAndStop(6); } if (nichiji == 4) { gotoAndStop(7); } if (nichiji == 5) { gotoAndStop(8); } if (nichiji == 6) { gotoAndStop(9); }
>>168 161です。
読み込みキャッシュで、
各jpegファイルに?から乱数を付与してやっているのですが、
IEだとその?込みでしっかりとtemporary internet filesの中に
残ってしまっています。
力技でもいいので、さらに上を行く方法ってないでしょうか???
>>161 サーバ側をいじれるんならHTTPヘッダでキャッシュ制御したら?
HTTP/1.1ならCache-Control: no-cache、HTTP/1.0ならPragma: no-cache。
179 :
178 :2009/05/10(日) 03:24:46 ID:PQULA1DW
>>178 その方法だと、IE以外では有効なんですが、
IEだとダメみたいです。IEは強制的にキャッシュするみたいなんですが、
いい方法ないでしょうか
181 :
178 :2009/05/10(日) 04:42:09 ID:PQULA1DW
>>180 そうなんだ、IEの仕様なんだね。んじゃno-storeも指定してみるとか。
なんかASと関係なくなってきちゃったな。
182 :
175 :2009/05/10(日) 12:46:30 ID:5hdXUlbz
>>176 解決しました。
ありがとうございました。
>>180 そこまで頑張ってキャッシュを消そうとするのは何故?
キャッシュ消しても画像に直にアクセスしてDLするとか、
スクリーンショットとるとかされる可能性もあるが…
たまに難癖つけるクライアント会社の担当がいるんだよなぁ。 JPGだと画像保存できるよね?→FLASHにします FLASHだとブラウザにキャッシュが残るらしいんだが→キャッシュ残さないようにします 画面キャプチャで切り取れるみたいだが→いやそれはさすがにどうにも・・・ でもってその会社のえらい人が出てきて「若いヤツが融通の利かない事言ってわるいねぇ」と。
>>181 161です。
No-Storeでもやっぱりうまくいかないですね。
ieだとサイトにアクセスできないとか、それはありえないし、
あとは外部読み込みをやめてしまうかですね、何か力技で思いつくものないでしょうか。
キャッシュのほうで観ると画像が真っ白になる仕様とか。
すみません、もはや完全にasからずれてますね
>>183 完全に技術的な限界を知りたいという好奇心です
>>186 ファイルの拡張子とっちゃうのはどうよ?サーバ側のファイルの管理が面倒になりそうだけど。
.jpgとかついてなければキャッシュフォルダを覗いても
パッと見それが画像ファイルとワカランし、クリックしてもビューアは起動しないし、いいんじゃね?
ASのLoaderが拡張子やContent-Typeを無視してファイル先頭のマジックナンバーで内容を判断
してくれれば、JPEGやPNGなどとしてちゃんと表示してくれるんじゃないかな。
168だけど勘違いしてた、キャッシュフォルダの中身から消したい、見せたくないってことか AS3ならBytearrayとかでビット演算しないと画像にならないとかできないかな?
>>187 拡張子とってもバッチリいけました。ありがとうございます。
asは拡張子なくても判断するの知りませんでした。あとは、
新しい画像ファイルをどんどん追加していく予定にしているので、
そのたびに拡張子を取る仕様に作ってかないとダメですね。
>>188 Bytearray全然知らなかったので、いま調べてるところですが、
外部に変換される画像になるデータを置いておいて、
それをASが読み込んで画像にして表示するってことですよね?
>>189 そう
でも予め画像を加工しないとならんから管理は面倒になるよな
cgiでリアルタイムに、ってのも可能だろうけど
191 :
Geek :2009/05/11(月) 10:07:59 ID:pKGJiJtt
Webサイトのトップページにちょっと使おうと思ってAS弄ってるんですが、 文字をボタンにする時に、クリック可能な範囲をテキストフィールドの 枠全体ではなく、文字の黒くなっているところだけにしたいんですが どこのパラメータ弄ればいいかが見つからないです。 以前Palaflaか何かで試したときは自動でそうなったのですが。(Palafla自体は使い道が違う気がしてやめました) あと文字を画面いっぱいまで大きくする方法もあれば教えていただきたいです。 あ、要するにやりたいこととしては画面いっぱいに 一文字のでっかいボタンを作りたいんです。
Netstreamを使った、flvのループ再生なんだけど、 映像と映像の合間にどうしても真っ黒な画面が入ってしまうんだけど、 これを回避する方法はないですか
193 :
Now_loading...774KB :2009/05/11(月) 22:13:26 ID:GkDu9cuP
FLASH本のうち、インスタンスの説明箇所で 「椅子とタンス」などとくだらない駄じゃれを 書いている本をあげてください。
194 :
Now_loading...774KB :2009/05/12(火) 02:13:17 ID:E10TXF+b
配列の要素がもつプロパティを新たな要素として新しい配列を作る方法はありますか? 例えば、array1 = [太郎,花子,次郎,三郎,陽子] という配列から array2 = [男,女,男,男,女] という配列を作りたいのですが。AS3です。よろしくお願いします。
var anotherArray = sourceArray.slice() とかすれば出来た気がする。多分
と思ってよくみたら全然求めてる事が違った。
198 :
Now_loading...774KB :2009/05/13(水) 12:59:18 ID:OADINq8V
環境はwinXP,FlashCS3,as3.0です。 クラスメンバを列挙したいのですが、 for inは動的に追加されたプロパティのみで、 describeType()ではプライベートメンバを表示してくれません。 他に方法はありますでしょうか?
200 :
Now_loading...774KB :2009/05/13(水) 13:53:00 ID:OADINq8V
>>199 ありがとうございます。
ひとまず列挙はあきらめます。
環境 :XP Flash:CS3 as :2.0 ボタンを押すと任意のテキストが縦スクロールで表示されるasを考えています。 最初はフレームとモーションを使って移動するように作成していたのですが、 あまりにもフレームが膨大な量になってしまった為、 もっと簡単に出来るのでないかと思い質問させていただきます。 何卒、よろしくお願いします。
MovieClipに対してプロパティのカラー効果/スタイル/着色 で色をかけるやつを、プロパティからではなくAS3のコードで 動的に色を設定したいのですがどのようなコマンドを書けばいいのでしょうか!? 基本的な事ですみません・・・
>>201 フレーム毎に テキスト._y+=xxx; を使う。
>>202 var myColor0:ColorTransform=new ColorTransform;
myColor0.color=R値 << 16 | G値 << 8 | B値;
MC.transform.colorTransform=myColor0;
後は自分で調べてみんしゃい。
204 :
202 :2009/05/13(水) 17:23:27 ID:Vuz7FXcJ
>>203 おおできました。でも!
元の色(ベースは白黒のグラデーション)に
うっすら赤みがけたいんですが、MC自体が透明がかってしまいます
var ct:ColorTransform = new ColorTransform();
ct.color = 0xff0000;
ct.alphaMultiplier = 0.3;
prmMc.item.transform.colorTransform = ct;
alphaMultiplierっていうのが色をかけるアルファだと思うんですが、
MC自体がアルファかかって透明っぽくなってしまいます・・・・
>>203 ありがとうございます!
早速試してみます!
206 :
Now_loading...774KB :2009/05/13(水) 18:16:03 ID:de+O1CQK
ct.color = 0xff0000; ↓ ct.color = 0xA0ff0000; にするとか?
207 :
Now_loading...774KB :2009/05/14(木) 05:12:38 ID:SRXK5ync
WinXP-ProでFlashCS3(AS3.0)です。 AS3.0ならXMLを掃き出す(吐き出す?)のは簡単とのことですが、具体的にどう やるのでしょうか? Webや本で調べても、XMLオブジェクト作成の所までしか分からず、実際のXML ファイル(例えば、abc.xml)の生成法が見つかりません。
Flashってクライアントサイドのセキュリティサンドボックスの外側に ファイルを書き出したりできないんじゃない。 やった事ないから知らないけど。
>>207 XMLデータの作成はこんな感じ。超簡単になった
var value:String = "hoge";
var id:int = 0;
var xml:XML = <root />;
xml.appendChild(<value id={id}>{value}</value>);
trace(xml);
ファイルとして保存するのは、FileRefferenceを使ってこんな
var fr=new FileReference();
fr.save(xml, "abc.xml"); // ダイアログを表示する
セキュリティの関係上、ユーザーが保存先を指定しない、「知らないうちに保存する」ような操作はできない。
ただ、FlashだったらCS3のバージョンだとたぶんまだFileRefferenceのsaveメソッドが使えないんじゃないかな?
211 :
Now_loading...774KB :2009/05/14(木) 15:50:24 ID:Fig+bGLu
WinXP Flash8 IE7です。
まさに下記のサイトの通りなのですが、
ttp://chabudai.sakura.ne.jp/blog/?p=56 ・1回目の訪問ではオープニングを表示
・そこからFlashボタンでページ遷移して、また戻ってきたときはオープニングをSKIPした状態で表示
・ブラウザを閉じてまた開くとオープニングから再生
というのを実現したいのですが、上記サイトよりスマートな方法はないでしょうか?
212 :
Now_loading...774KB :2009/05/14(木) 15:58:37 ID:8Ae4BDSL
AS2です。onEnterFrame内でmoveTo、lineToを使って異なる場所に36本の線を 描画していますが、時間が経つに従って描画が遅くなります。 何かリソースを解放したりしないといけないのでしょうか。
213 :
Now_loading...774KB :2009/05/14(木) 16:00:55 ID:9mbhPwyn
現在CS3のAS2、MacOS10で制作を行っております。 最終的には、Macプロジェクタ、Winプロジェクタをパブリッシュして使用しようと予定しています。 コンポーネントのtextAreaにおけるテキストのjustify コンポーネントのtextAreaに関して質問です。 ステージの_rootに配置されたコンポーネントのtextArea(インスタンス名:mytextArea)に、 外部テキストから読み込んだ文章(myText = <p>本日は・・・でした。</p>)を表示しようとしています。読み込んだ文章に下線等を使用したいため、HTMLの使用OKの状態にしています。 そして、下記のような設定で読み込んだ文章にJustifyと色の変更をかけようとしたのですが、 色の設定は反映されるのですが、どうしてもjustifyだけが反映されません。 var my_styles = new TextField.StyleSheet(); my_styles.setStyle("p",{textAlign:'justify', color:'#CC6699'}); mytextArea.styleSheet = my_styles; mytextArea.html = true; ためしにrightやフォントサイズの変更を試したところ反映されました。 パブリッシュ設定もver8に設定してあります。 どなたかjustifyの設定方法をご存知の方がおられましたら、教えていただけないでしょうか。 よろしくお願いします。
>>211 それなら戻ってくる時に、オープニングの後のフレームに飛ばせばいいだけでは?
スマートっつか、SharedObject使えば、Flashだけで完結するとは思う。
215 :
Now_loading...774KB :2009/05/14(木) 16:40:17 ID:+d1E5esi
スクリプトの編集画面で 「\」と表記したいのですが「/」で表示されてしまいます。 制御自体は問題ないのですが、「/」で表せるにはどこを 設定すればよろしいでしょうか?
>>215 それってAS3.0じゃね?
3.0はそもそも「/」じゃないのかと。
217 :
Now_loading...774KB :2009/05/14(木) 17:37:31 ID:+d1E5esi
はい。AS3です。 AS3の参考書を見ると「\」と表記しているので どっか設定があるのかと、、。
218 :
Now_loading...774KB :2009/05/14(木) 18:24:29 ID:jcrilyB4
>>212 onEnterFrameということは何度も描画されてないかな?
>>214 同じドメインのページから「戻ってきた」っていう判断をFlashにさせないとだめですよね?
なのでJSかSharedObject使って「一旦オープニングを見たよ」という情報を
どこかでやり取りしないとだめですよね?
ちなみに調べた結果SharedObjectはブラウザ閉じても残っちゃうので、
再起動したとき「またオープニングから始める」って言うのができないみたいです。
自前のスプライトクラスの上にListBoxを動的に表示させたいのですが、うまく行かなくて困ってます。 ただのテキストラベルのような物だと var textField:TextField = new TextField(); textField.text = "Hello World!"; addChild(textField); こんな感じでオブジェクトを作成してaddChild()すれば表示されます。 これを Listオブジェクトに変えると、実行しても何も表示されません。(エラーも出ません) 無料のFlexSDK3.3.0.4852のアドビ版にて mxmlcを使ってコンパイルしています。 mxmlは使わずASだけで記述しています。 import fl.controls.List; ではコンパイル時に未定義とエラーになったため import mx.controls.List; をインポートしています。 ググって見たのですが、該当するサンプルコードも見つけられず途方にくれています。orz
>>219 ページを閉じなければ2度目のオープニングはスキップ
でいいんじゃね?AS2ね
1振れ目に
if (reOpen == undefined) {//reOpenが定義されていなければ初訪問
reOpen = 1;
gotoAndPlay("opening");
} else {
gotoAndPlay("contents");
}
222 :
Now_loading...774KB :2009/05/14(木) 20:10:03 ID:N8Qo2O1d
>>220 flexを使ったことがないし、ListBoxというのも使ったことがないので
違ってたらすいません。
ListBoxがUIComponentのサブクラスならsetSize(w,h)が必要だと思います。
>>219 もしかして、トップにはFlashがひとつあるだけで、
それ以外の内容は別のhtmlに飛ぶっていう仕組みか?
あえていうと、それをやめるのがいいかと……いや、すまん。ごめんね。
でもトップだけFlashって、個人的には不便な作りだと思うんだよね。
あと、クッキー使ってもオフにしてれば無意味になってしまうし
再起動した時に「またオープニングから始め」たくない人もいるだろうし
一番シンプルにできるのは、スキップボタンつけとくとかじゃね?
224 :
Now_loading...774KB :2009/05/14(木) 20:52:23 ID:kdk3vHtx
ロールオーバー効果を作ってるんだけど、サーバ上ではちゃんと反応するのに、ローカルでは反応しない。 こんな現象経験したことある人いますかー!
>>22 すいません。 ListBoxではなくListです。(見出しの書き方が悪くて誤解されたようですみません)
setSize()は未定義のメソッドでコンパイル蹴られました。
width と height をそれぞれセットしていますが、何も表示されないです。orz
部分抜粋ですが
oList = new List(); ←クラスのprivate変数でList型
oList.dataProvider = aObj; ←クラスのprivate変数でArray型
oList.x = 16;
oList.y = 16;
oList.width = 100;
oList.height = 100;
oList.visible = true;
addChild(oList);
こんな風に書いています。
227 :
Now_loading...774KB :2009/05/14(木) 21:44:31 ID:N8Qo2O1d
>>227 ありがとうございます。
もうあきらめかけてましたけど、参考にしてもう少しがんばってみます。
(CS3は持っていないので、もしかしたら使えないのかも知れないですね。)
>>227 setStyle()を呼び出したら、
Error: No class registered for interface 'mx.styles::IStyleManager2'.
at mx.core::Singleton$/getInstance()
at mx.styles::StyleManager$/get impl()
at mx.styles::StyleManager$/isInheritingStyle()
at mx.core::UIComponent/setStyle()
at test1()
上記のエラーが出ました。
そもそもFlexSDKのASでは何か必要なライブラリ(というかコンポーネントと呼ぶのかな?)が
足りなくて使えないような気がします。
>>225 aObjをArrayじゃなくてArrayCollectionにしたらいいんじゃないかな。
dataProviderにArrayを与えるとArrayCollectionでラップされて、ListはこのArrayCollection
への変更しか認識しない。つまり元のArrayを直接いじってもListには反映されない。
もしくは、Listの内容が固定ならdataProviderに設定する前にaObj:Arrayに要素を追加しとくのでもよい。
>>230 ありがとうございます。
明日また試してみます。
>>220 ,225 です。
>>230 さん
遅くなりましたが、一応試してみました。
結果から言うと変化無しでした。
またdataProviderに何もセットしないでも本来ならおそらく何か表示はされると思うのです。
(外枠やスクロールバー等)
フリーのFlexSDKを対象としたASだけで作ってあるサンプルプログラムが置いてあるサイトを探し回りましたが、
どうもinportしているのが flash.xxxx.xxx のようにパッケージ?が flash の物しか使用されていない事に
いまさら気がつきました。(import flash.display.*; とか import flash.media.*; 等の事です)
製品版を持っていないとfl.xxxとかmx.xxx等はASからは使えないのかもしれないですね?
SDKのsamplesフォルダの下を全コンパイルしてみましたが、mxmlで記述されている物はリストボックスやコンボボックスが使用可能でした。
234 :
Now_loading...774KB :2009/05/15(金) 04:02:33 ID:P8WE+PcD
環境)OS:WinXP-Pro,FlashCS3-Pro(Player9.0,AS3.0)
XMLListで質問です。下記のXMLを var xml:XML でxmlとして
[parm xmlns="
http://test.20090515/ "]
[value id="0"]19[/value]
[value id="1"]23[/value]
[/parm]
このvalue要素(19, 23)を
nsStr = xml.namespace();//Namespaceの取得
var ns:Namespace = new Namespace(nsStr);
//
default xml namespace = xml.namespace();
var valueList:XMLList = xml.ns::value;
trace (valueList);
で表示しようとしましたが、下記のようにNamespace入りタグでtraceされました
[value id="0" xmlns="
http://test.20090515/ "]19[/value]
[value id="1" xmlns="
http://test.20090515/ "]23[/value]
どうすべきでしょうか?
※タグ記号<>はLive2chを使うと消えてしまうので、[ ]で書いています。
235 :
234 :2009/05/15(金) 05:33:54 ID:P8WE+PcD
(自己解決しました) trace (valueList); を for each (var obj0:Object in valueList) { trace (obj0); } でOKでした。
236 :
227 :2009/05/15(金) 05:37:02 ID:qLvrbySx
>>232 flexをインストールして、調べてみました。
asファイルをコンパイルすると、なぜかApplication.applicationがnull
で、UIComponentの更新などにかかわると思われるUIComponentGlobals.layoutManagerなどがnullになってました。
mxmlファイルをコンパイルして作成したswfでは
Application.applicationの値が正しく設定され、Listが表示されました。
>>233 >>無償のFlexSDKだけでmxコンポーネント使ったswfつくれるよ?
はい、mxmlのサンプルをコンパイルした場合は正常に表示されているのを確認しました。
私がやろうとしているのは、
>>220 に書いている通りASのソース内で(ASだけで記述しmxmlとの連携はしない)
Spriteクラスの派生クラス内で特定のイベント時に動的に mx.controls.List のオブジェクトを表示させたいのです。
もしそれも普通に出来るよ?って意味でしたらすみませんが、最小限のサンプルコードを掲示して頂けるとありがたいです。
>>236 CS3をお持ちなのにわざわざ環境を作ってまで試して頂いてありがとうございます。
最近FLASHを勉強しはじめたド素人なので理解できてないのですが、ASからmxコンポーネントを呼び出す場合に
何か特殊な初期化を実行しておかないとダメって事ですかねぇ?
仕事の関係でJAVAを使った経験があるのですが、ASは文法やメソッドのネーミングが似ていて自分にも理解しやすいかも?
と、気軽に踏み込んでみたら返り討ちにあってしまった感じですw (^_^;
>>237 いや、ASだけで書いても使えるし。
コードは、今パソコンじゃないから後で。
Flashコンポーネントは
Flashの体験版とかで、コンポーネントの中身をステージにドラッグして
SWCファイルで書き出すとかすれば出来るらしい。検索すればでてくる。
あとはキースピータズがもの凄くシンプルなコンポーネントのライブラリだしたり
してる。日本人でもこの前インタフェース用ライブラリ開発してるって人みかけた。
http://code.google.com/p/minimalcomps/
>>238 出来るのですか!散々探し回ってあきらめかけていたので本当に助かります。 ありがとうございます。
>>239 体験版からfl系のコンポーネントを抜き出す話は調べまくってる時に見かけたのですが、
なんか後ろめたい感じがしてやめました。
minimalcomps 良さそうですね。 ありがとうございます。
SWCを flex_sdk\frameworks\libs の下に置いておけば使えるようになるのかな?
これから出かけますので帰ったらそれも試してみたいと思います。
>>これまでレス頂いた皆さん
ASプログラミングに慣れている人から見れば、相当バカな事を聞いているのでしょうけど、
かまって頂いてありがとうございます。
241 :
212 :2009/05/15(金) 10:39:59 ID:vpdF8P/z
>>218 はい、毎回描画しています。20FPSにしていますので、1秒間に720本の線を
描いています。10秒だと7200本。こんな使い方、間違ってるのでしょうか。
clearしているかい?
243 :
Now_loading...774KB :2009/05/15(金) 11:13:05 ID:7ANDpFXj
ひたすらベクターが増えていって、非常に重くなっていきます。 描画を一度のみにするか、clearをするかで解決するかも。 もし、線を毎フレーム次々に追加していきたいならBitmapdata.draw を使うと良いと思います。
>>240 ごめん。俺の勘違いでした。ホントごめん。mxmlなしではできないみたいです。
代わりに、こんな方法で勘弁して。(もう見つけたかと思うけど)
●main.mxml
<NewClass xmlns="*" />
●NewClass.as
package
{
mx.controls.List;
mx.core.Application;
mx.events.FlexEvent;
public class NewClass extends Application{
public function NewClass() {
addEventListener(FlexEvent.CREATION_COMPLETE, function():void {
var l:List = new List();
l.dataProvider = ["Hello", "World"];
addChild(l);
});
}
}
}
245 :
Now_loading...774KB :2009/05/15(金) 13:29:35 ID:YXZKlJmj
名前空間を持つXML読み込みとEvent.ENTER_FRAMEが併記できず困ってます。
環境はFlashCS3(AS3.0)とWinXPです。
最初フレームアクション記述で下記のXML読み込みのみを実行したところ、
何も問題は有りませんでした。
var loader:URLLoader = new URLLoader();
loader.addEventListener (Event.COMPLETE, completeHandler);
loader.load (new URLRequest("new XML.xml"));//new XML.xmlを読み込む
function completeHandler (event:Event):void {
//実際の読み込み処理
}
ところがこの下に、試しに具体的な処理がないフレーム処理(下記)を追加したところ、
エラーとしてあらゆるクラスが一覧となって繰り返し出力されました。
addEventListener (Event.ENTER_FRAME,onFrame);
function onFrame (frameEvt:Event) {
}
具体的なエラーの内容は
http://upload.jpn.ph/upload/img/u40114.jpg です。
この場合、どうすれば良いのでしょうか?
アドバイス願います。
>>237 あーmxmlなしで「asのみで」かぁ。mxmlも中ではasに変換されてるからできなくはなさそうだけど、
mxmlcがやってくれるflexフレームワークのブートストラップを全部自分でやることになるのでツライと思う。
mxmlc -keep MyClass.mxml で生成されるASコードを見てみるといいよ。
mxコンポーネントを使うなら
>>244 の言うようにトップはmxmlにしてブートはmxmlcに任せた方がいいよ。
247 :
245 :2009/05/15(金) 15:09:37 ID:YXZKlJmj
(追記) エラーはフレームレート(30fps)で繰り返し出ていて、各繰り返しの末尾に VerifyError: Error #1025: 無効なレジスタ 2 がアクセスされました。 があります。 このエラーについても調べましたが、これも分かりませんでした。
248 :
212 :2009/05/15(金) 15:16:46 ID:vpdF8P/z
>>242-243 Bitmapdataって知らなかったのですが、タイミングをみて全ての線を
BitmapDataとしてdrawして、同じ位置に貼り付けた後Clearするって
方法があることが分かりました。割とFAQだったのですね。
ありがとうございました。
Win2000って人も少数ながらいると思うけど、Flash Player Ver9以上ちゃんと動いてるのかな。
>>250 レス有難うございます。幸い、自己解決できました。
上の
function completeHandler (event:Event):void {
//実際の読み込み処理
}
での処理とは、try〜catch を置いてその中に
var xml:XML = new XML(event.target.data);
nsStr = xml.namespace();
var ns:Namespace = new Namespace(nsStr);
//default xml namespace = xml.namespace();// ←※ これがあるとVerifyErrorになる。
var node_parm:XMLList = xml.ns::parm;
for each (var obj0:Object in node_parm) {
//配列に代入
}
としました。ここでコード右の注釈の通り、default xml namespace = xml.namespace()
という通常は必要な記述が悪さをしていたらしく、無効にしたところ
問題なく動作しました。
あ〜ん、なまえ間違えちゃったよ。 962&965 → 245&247 です。
254 :
Now_loading...774KB :2009/05/16(土) 00:00:35 ID:Ii6QlAbs
FlashCS3(AS3.0),WinXP-Pro 外部ファイル(Txt)を読み込む際に、その外部Txtの状態を監視する 方法ってありますか?つまり、 A) 外部Txtが何も変化を起こしていない → そのまま読み込む B) 媒体への書き込み中(Busy時?) → 読み込みを中止する というようにASで切り替えるものです。 よろしく願います。
>>244 遅くなりました。 240です。
ああw やっぱりmxmlがないと無理ですか、
でも、そのコード参考になります。 ありがとうございました。
>>246 mxmlとASのみで記述する違いを理解できていないため、まずはASの勉強としてやり始めたばかりです。
なるほどブートストラップが異なるのですか! まだ本当に小規模のプログラムを作ってみただけですが、
今後もう少し組めるようになったら、mxmlと組み合わせたやり方も挑戦してみます。
ありがとうございました。
>>254 読み込んだ時点との更新タイムスタンプ比較するとかじゃね
>>254 俺だったらテキストに直接アクセスしないで
ファイルロック状態を判断するサーバサイドスクリプトにアクセスするように作る。
258 :
Now_loading...774KB :2009/05/16(土) 19:58:27 ID:DIfjmUkT
すいません。Graphicsクラスは静的クラスですか?
yes なぜ調べない
261 :
258 :2009/05/16(土) 21:12:21 ID:DIfjmUkT
>259さん ありがとう。ヘルプを見ても載ってなかったので。
263 :
258 :2009/05/16(土) 23:41:27 ID:DIfjmUkT
ありがとう。でも「静的」とか「static」とか書いてないのに。 静的クラスってわかるのですか? >ActionScript コードから直接 Graphics オブジェクトを作成することはできません。 これが静的クラスであることを意味するのでしょうか?
>>263 いや本当は静的クラスじゃないんだけどね
ShapeとかSpriteとかにgraphicsプロパティがあって、そのプロパティを通して使用することができる
Graphicsクラスだけを単独で生成することはできない
厳密な意味で静的かどうか知りたかったのならすまん
>>259 Graphicsが静的ってのは違うんじゃないかなー
静的クラスてのはMathみたいにstaticメンバ・メソッドしかないクラスのことじゃね?
Graphicsのインスタンスは自分では作れなくてもFlashランタイムは作ってくるし、
インスタンス毎に情報を保持してるだろうから静的とは言わないと思う。
266 :
258 :2009/05/17(日) 00:38:20 ID:HMBRzsPC
264さん265さん ありがとうございました。 自分はnewでインスタンスが生成されないものを 静的クラスと思ってました。 勉強になりました。ありがとうございます。
268 :
258 :2009/05/17(日) 02:20:11 ID:HMBRzsPC
267さんありがとうございました。 えっとリンク先、僕にはちょっと難しかったです。 でもこんなことですかね。 確かSpriteとMovieClipの生成時に、Graphicsクラスが(自動的に)生成されたんですよね。 つまりは、Graphicsクラスは、SpriteとMovieClipの子クラスじゃなければならなくて、 他の全然関係のないところにクラスが生成されないように、newでの生成を禁止している。 ところで、Javaの書き方と、ActionScript3.0の書き方がそっくりびっくりしました。
269 :
258 :2009/05/17(日) 02:40:35 ID:HMBRzsPC
いや。僕の勘違いでした。上の件撤回します。すいません。
Flash CS4でAS3スクリプトを使い、サイトのメニューを作っています。 IE8で動作確認を行っているのですが、[F5]キーで更新した時に表示されません。 表示領域をクリックしたり、他のウィンドウをアクティブにした後に再度IE8をアクティブに すると表示されます。 更新に関して何かスクリプト記述が必要でしたらご教授頂ければ幸いです。 やっている事は、 ・タイトルロゴの読み込みを待つ(ロゴは動的ではなく、ムービークリップに貼り付けて静的 にトゥイーン)。 ・タイトルロゴを上から下に移動。 ・最後のフレームで一つ前のフレームへgotoAndPlay()。 以上です。 切り分けのため、ボタンは全て取り去りました。
>>270 IE8に対するHTMLの問題はどう?
他のブラウザ(例:FireFox)を持っていたら試すのも一案。
272 :
Now_loading...774KB :2009/05/17(日) 13:41:19 ID:HMBRzsPC
すいません。 メソッドを変数に代入するという意味がよくわかりません。 例えば: channel = snd.play(pausePos); 上記の場合、プログラムを実行するときは channel(); とするのでしょうか?
273 :
Now_loading...774KB :2009/05/17(日) 14:35:08 ID:e37/jOst
channel = snd.play; channel(pausePos); じゃないかな。
274 :
Now_loading...774KB :2009/05/17(日) 15:36:50 ID:HMBRzsPC
ありがとうございます。 でもそれだったら、 function関数 で作ればいいような気がします。 function channel() { snd.play() } あれ、なんで変数にメソッドを代入するんだろう。。
>>274 var currentFunc;
function funcA()
{
trace("すき");
currentFunc = funcB;
}
function funcB()
{
trace("きらい");
currentFunc = funcA;
}
currentFunc();
stop();
とかさ。
currentFunc = funcA; currentFunc(); stop();
277 :
Now_loading...774KB :2009/05/17(日) 16:29:31 ID:HMBRzsPC
275さん。 すごいヒントありがとう。 えっと。うんと。よく考えておきます。
失礼します。 Flex SDK から始めたんですが、Flash のフレームの概念がわかりません。 プログラムを書いて、それが実行されるのとフレームはまったく別の流れなんでしょうか? 描画更新はフレーム毎に行われ、そこでプログラムは一時中断されるのでしょうか?? ゲームなどを作るとき、よく分からないので ENTER_FRAME の時に描画したりしてますが…結構無駄な気もします…。 本家サイトの説明でもその辺の記述が一切見付からなくて、困っています。 それと、イベントがいつ発生するかもよくわかりません…。 マウスのクリックなど、できたらイベントを使わないで取得できたら嬉しいんですが…。
279 :
274 :2009/05/17(日) 23:25:38 ID:HMBRzsPC
こういうの無名関数っていうんですね。 でもいまいちこの無名関数の利点がよくわからん。。
>>274 関数も数値やオブジェクトと同じように一つの値として扱えることは意味があるよ。
f = myfunc; のような代入式の形じゃあまり見かけないかもしれないけど、よく使われる
addEventListener()でもイベントハンドラ(=関数)を引数に代入するでしょう?
やってほしい処理をポンと渡せるのってとてもベンリだと思うのです。
281 :
Now_loading...774KB :2009/05/18(月) 00:13:58 ID:YgS3ubHv
>>278 画面更新のためにスクリプトが停止することはなく、
描画処理とスクリプトの実行が同時に行われることもないとか。
詳説ActionScript3.0の23章に画面更新について書かれてます。
>>279 無名関数ってのは
function(hoge:Hoge){ };
みたいな名前の無い関数。
名前が無いから
var func:Function = function(){ };
みたいな感じで変数に入れて保持する。
これだけだと存在意義があまり無い感じがするけど
たとえばこんなふうに配列にいれたりするような使い方もできる
var funcList:Array = [
function(){ },
function(){ },
function(){ }
];
こういう風に関数を配列にいれて順番に実行するようにしたりすれば、
ゲームの敵キャラのAIのアルゴリズムを組み替えたり、
独自のスクリプトみたいなものを実装したいときにも使える。
無名関数はAS3では関数クロージャっていってthisの扱いが
変わったりするから、ちょっと注意が必要なんだけど、この
違いを活かす使い方もできる。けどそれはまた別の話
AS2.0 CS3です。 総計200程になる自作ライブラリがあります。 プロジェクトAからだと全く問題無くコンパイルできますが、 プロジェクトBだと特定のクラスが正常に継承されずに出力されます。 Object/ClassA/ClassB/ClassC/ClassD といった階層で継承されているのに対して Object/ClassC/ClassD の状態でインスタンスが生成されてしまいます。 ちなみにデコンパイラでClassCを調べると、しっかり「extends ClassB」されているのを確認しました。 このような現象はどのようにして発生するのでしょうか? またどのように修正すれば良いのでしょうか?
JavaScriptはクラスが存在しないから オブジェクトと関数を関連づけたり、 名前空間を分離するのに、 ライブラリみると大量に無名関数使われたりするけど AS3だとどうなんだろうね。 凄い便利な使い方って思いつかない。
Tweener.addTween(spr, { x:tgtx, y:tgty, alpha:0, time:1, transition:"linear", onComplete:function():void {stage.removeChild(this)}} ); こういう短いコールバックだと、 いちいち名前考えたりするの面倒だから、無名関数使う人結構いるかもしれない。 でも、それも好みの問題だし、無理して使う必要もない気もする。
286 :
Now_loading...774KB :2009/05/18(月) 12:09:57 ID:PXEK/QLN
FLASH CS3、AS3.0です System.totalMemoryの値をENTER_FRAMEで表示させてチェックしてみてるのですが、 通常のswfの場合の値・平均値はどれくらいがベストなのでしょうか?
287 :
270 :2009/05/18(月) 12:49:30 ID:8w/6+7Ob
>>270 自己解決しました。
foo_loader.swf ロード&進捗表示
foo.swf メインコンテンツ
の様に2つのswfファイルに分けて、foo_loader.swfの中でfoo.swfをロードする様にしたら、
[F5]キーの更新できちんと再表示される様になりました。
>>271 アドバイス有り難うです。
288 :
274 :2009/05/18(月) 12:50:30 ID:BRlLkUYa
280-285さんありがとう。無名関数の利点あるんですね。 たくさんASを書いている人にとってはすごく便利なものなのかと。 ところで、以下は、音を読み込んで再生させるスクリプトですが、 channel = snd.play(); っていうのも無名関数の一種ですか? :::::::: var snd:Sound = new Sound(); snd.load(new URLRequest("song.mp3")); var channel:SoundChannel = new SoundChannel(); channel = snd.play(); ::::::::
>>288 var sqrt:Number = Math.sqrt(5);
これとほとんど同じことなんですが、これは無名関数に見えますか?
まず snd.play() は明らかにplayと名前のついた関数の呼び出しなので
無名関数ではありません。
channel = snd.play();
は関数を代入してるわけではなくて、play()の返値をchannelに代入してる
だけですよ。play()が返値にSoundChannelのインスタンスを返すから上のとは
ちょっと違うように見えるけど基本的には同じことです。
ちなみに
var channel:SoundChannel = new SoundChannel();
channel = snd.play();
とすると、せっかくnewしたSoundChannelを使うことなく置き換えられて無駄なので
var channel:SoundChannel = snd.play();
と書いていいです。
見てるとなんか用語に振り回されてるような感じがするから、
もうちょっとゆっくり基本から押さえていったほうが結局は近道かもよ。
290 :
274 :2009/05/18(月) 20:43:13 ID:BRlLkUYa
ありがとうございます。 単なるメソッドの戻り値ですか。 >見てるとなんか用語に振り回されてるような感じがするから、 >もうちょっとゆっくり基本から押さえていったほうが結局は近道かもよ。 ですかあ。ありがとうございます。基本に戻って勉強します。
AS1.0でシューティングを作っているのですが弾の連射の当たり判定の方法で困ってます。 10発まで連射できるとしてMC「tama」を複製して飛ばすまではいいのですが敵との当たり判定の方法が分かりません。敵の種類が多いので・・・・。 よければ多数の敵にも対応できる方法を教えてもらえないでしょうか。よろしくお願いします。
292 :
Now_loading...774KB :2009/05/19(火) 00:13:05 ID:DXdS89Ya
>291 AS1.0ってFLASHのバージョンはなんですか?
>>291 弾を配列1に入れる、敵を配列2に入れる。
配列1のループ中に配列2の敵と当たり判定。
単純に考えるとこうかな。
>>294 どうせそのまま使えないからちょっと抽象化して書くよ。
//弾発射時
tamaList.push(弾MC);
//敵出現時
tekiList.push(敵MC);
//当たり判定
for(i=0; i<tamaList.length; i++){
for(j=0; j<tamaList.length; j++){
if(当たり判定){
//当たった時の処理
}
}
}
みたいな。当たった時の処理で弾/敵が消えるとき、
または画面外に出た時はtamaListとtekiListから
MCを消すのを忘れずに。
ごめん for(i=0; i<tamaList.length; i++){ for(j=0; j<tekiList.length; j++){ だった。 あと当たり判定をするのはtamaList[i]とtekiList[j]ね。 hitTestでやるか座標でやるかは作り方によるので 自分のやり方で考えてみて。
297 :
Now_loading...774KB :2009/05/19(火) 14:09:19 ID:rqt+KB39
球と球の判定 長方形と長方形の判定 ビットマップのカラーを見て判定(高負荷) 球同士か回転のない長方形同士が負荷も少なく、楽で良いかな。
点と長方形だと速い。
>>295-298 ありがとうございます。大変勉強になりました。
当たり判定なのですがhitTestでは数が増えると重いらしいので座標で行っています。一番軽い方法はやっぱり座標判定なのでしょうか。
flashでやるには向いてないと分かってても弾幕シューティングにいつか挑戦してみたいと思いまして。
300 :
Now_loading...774KB :2009/05/19(火) 20:58:58 ID:DXdS89Ya
LiveMotionの質問はここでいいですか?
301 :
Now_loading...774KB :2009/05/19(火) 23:11:11 ID:HnjdR6H2
キーボードイベントの取得について質問です。 環境はflash9 as3。 ESCキー押下を拾いたいのですが拾えません。 stage.addEventListenr(KeyboardEvent.KEY_UP, handler); textField.addEventListenr(KeyboardEvent.KEY_UP, handler); function handler(event:KeyboardEvent):void { trace("KEY_UP", event); } テキストフィールド上では拾えますが、 stage上では拾えません(イベントが発生しない)。 ESCキー押下を拾う方法はありませんか?
>>301 どういう状況で使うか分からんが
stage.addEventListener (KeyboardEvent.KEY_DOWN, key_ope);
stage.addEventListener (KeyboardEvent.KEY_UP, key_ope);
function key_ope(keyEvt) {
trace(keyEvt.type);
trace(" keyCode:" + keyEvt.keyCode);
}
ならEscのキーコードをを拾えた。
ただし、プレビューでは一旦ステージをクリックしないとだめだが。
303 :
Now_loading...774KB :2009/05/20(水) 02:01:22 ID:41Vq7YNU
>>302 あああああ、マジすんませんorz
とりあえず手元にあるIE7とchromeで確認したところ、普通にESCキー取れました。
ずっとぷにるで動作確認してました。
ぷにるで動かなくてもいいので、これで大丈夫です。
ご迷惑おかけしました。
> どういう状況で使うか分からんが
stage上に表示したポップアップウィンドウ風のMCを、
ESCキーを押すと閉じるという目的でした。
304 :
Now_loading...774KB :2009/05/21(木) 02:26:53 ID:L8LOfOjU
ストロボのガイドナンバー計算機でもつくろうと思ったんだが、
http://ja.wikipedia.org/wiki/ガイドナンバー_ (カメラ)
GN=gn F値=f 距離=d ISO感度=isoでやってみて、次のスクリプト
gn=f*d/Math.sqrt(iso/100);
でガイドナンバーは計算デキタ
しかしiso感度を得ようと思うと式を作れない。
誰か助けてください
305 :
Now_loading...774KB :2009/05/21(木) 07:47:19 ID:zfTJCN8F
AS3使いたいけど、8だよ cs4は色々と微妙みたいだし、cs3は売ってないし(アカデミね) どうしよう(´・ω・`) ちなみに大学4年です CS4買っておくべき?
AS3をやりたいだけならフリーの開発環境で充分。 何かを作りたいのであればAS2で充分。 仕事でFLASHしたいなら、CS4を買う。
AS3だけで考えればCS4から実装されたvectorクラスが便利すぎるのでお勧めです。 8持ってるんだったらアップグレード版が26250円で買えますし。
>>305 CS3 → CS4で私が気に入っている点。
・H.264エンコード対応
Flashで動画制作する人には便利。
フリーソフトを集めれば同等の事ができるけれど、複数のソフトを組み合わせたり泥臭い。
・On2 VP6 2パスエンコード対応
今までは1パスだった。
フリーソフトでできるけれど、H.264以上に泥臭い手順が待っている。
・モーショントゥイーン
CS3とCS4では操作がかなり違う。
CS4の方が慣れると便利だ。
・擬似3D
CS4は平面を擬似的に3D表示可能で、奥行きのある回転などができる。
309 :
Now_loading...774KB :2009/05/21(木) 11:55:11 ID:rlXQa5cq
AS2です。XMLオブジェクトにファイルから読むのにLoadを使ってますが、 Windowsのクリップボードからテキストフィールドに書き込まれたデータは どう格納すればいいでしょうか。
>>309 var xml:XML = new XML(textField.text);
ってことかな?
311 :
Now_loading...774KB :2009/05/21(木) 14:35:36 ID:l9LgGD2y
AS1です。 SWFをVer8で書き出すと on (release) { getURL("hoge.html"); } が利かないのですが仕様が変わったのでしょうか? Ver8以下でパブリッシュすると機能します。
312 :
305 :2009/05/21(木) 14:52:54 ID:zfTJCN8F
皆さんアドバイスありがとうございます! 体験版使ってみて、重さが気にならないようなら購入しようかな でもなんかFLASH CS4板とかみると、きつそうだ…
313 :
311 :2009/05/21(木) 14:57:06 ID:l9LgGD2y
自己レスです。 サーバーにアップしたらgetURLが機能しました。 ローカルだとだめなんですね。なぜでしょう?
314 :
311 :2009/05/21(木) 15:13:13 ID:l9LgGD2y
さらに自己レスです。 グローバルセキュリティ設定でローカルを信頼させないといけないんですね。 面倒になったもんだ。
315 :
Now_loading...774KB :2009/05/22(金) 10:04:02 ID:3c+kV373
//MyClass public class MyClass extends Sprite { public var str:String = "DEFAULT"; public function MyClass() { addEventListener( MouseEvent.CLICK, clickHandler ); } private function clickHandler( event:MouseEvent ):void { trace(str); } //AButton public class AButton extends MyClass { public function AButton() { str = "AButton"; } extendsの事なのですが、 ライブラリのムービークリップとリンゲージしている、ボタン郡の処理をMyClassで指定したいのですが 押した時のボタン判別に、そのボタン名の文字列を渡いたい場合どうすれば良いのでしょうか。 上のようにしても、出力されるstrの結果は"DEFAULT"のまま表示されてしまいます。 FlashCS3、Actionscript3.0です。
316 :
Now_loading...774KB :2009/05/22(金) 10:14:21 ID:fIzIJ2D7
WindowsXP + Flash CS4 です。 「_等幅」や「_明朝」のデバイスフォントを、ダイナミックテキストエリアで 表示させたいのですが、swf(FlashPlayer10)では表示できるのに AIR1.5で出力すると「_ゴシック」と同じフォントになってしまいます。 ただし、「MS ゴシック」など直接フォント名を指定したときはうまくいきます。 AIRで、「_等幅」や「_明朝」を表示するにはどうすればいいでしょうか?
AS3 + Player9です。 タイムラインに配置したmcに、プロパティからクラスMc/基本クラスHOGEを設定しました。 HOGEクラスのhogehoge()をオーバーライドしたいのですが、mcのタイムラインに override public function hogehoge():void{ 〜 } と書くとパブリック属性はpackageでって怒られるし、 publicを外すとオーバーライドできませんと怒られます。 そもそもタイムラインでオーバーライドは出来ないんでしょうか? よろしくお願いします。
318 :
Now_loading...774KB :2009/05/22(金) 12:12:18 ID:OCOD+kMc
外部のJavaScriptなどから、SWFのgetVariableメソッドを呼び出すことで、 ActionScript内の変数やオブジェクトのプロパティを取得しているのですが、 最近、うまく取得できないSWFにでくわしました。。 調べてみると、このSWFは、Flash10(ActionScript3.0?)で作成されているようです。 例)TextFieldのオブジェクトに対してgetVariableを読んだ場合 getVariable("textFieldObj") → "_level0.textFieldObj" getVariable("textFieldObj.text") → エラー 以前なら、textの場合もエラーとならずに表示内容を取得できていたのですが・・ Flash10(ActionScript3?)で作成されたSWFからは、 以前のようにgetVariableで値を取得できないということなんでしょうか?
AS2とAS3って連携とか出来たっけ
一方通行だったと思う。
>>315 よくわからんけど、どのボタンをおしたかを判断したいなら、インスタンス名で判断すれば良いんじゃないかな?
var a:AButton = new AButton()
a.name = "buttonA"
trace(a.name == "buttonA")
みたいにして
どの種類のボタンを押したか(どのクラスのインスタンスか)を判定したいなら、is演算子で良いんじゃない?
trace(a is AButton)
みたいに
322 :
Now_loading...774KB :2009/05/22(金) 20:42:00 ID:aOcMLVfD
このスレでいいのか不安ですが AS3(Flex)でRPGっぽいゲーム作ってます。 メニュー画面とか会話ウインドウ作成するのに参考になる サンプルソースってないでしょうか?
324 :
Now_loading...774KB :2009/05/23(土) 18:34:01 ID:GN2aYU+U
ステージ上にシンボルを配置してインスタンス名をつけるとき、 まったく同じ名前をつけることが可能ですが、 同じ名前をつける利点てありますか? getChildByNameなどを使っても1つにしかアクセスできないし、 まとめて操作できるわけでもないし。
mcApoint mcBpoint mcCpoint という関数があるようなとき、 昔つくったAS2では function(McName){ this[MCname+"point"].〜〜〜 } という感じで this[] を使って名前を分解(?)していたんですが、 AS3でこの代わりになるようなものはありますか?
>>325 thisが指す場所があってればそのまま使える。
呼び出す場所によってthisが合わなくなるなら、
var thisMc:MovieClip = this;
function(McName){
thisMc[MCname+"point"].〜〜〜
}
とでもしてthisの位置を確定しては?
ところでmcApointってほんとに関数?
あ、型とかもちゃんと書いてくれよな function(McName:String):void{
328 :
325 :2009/05/24(日) 00:20:40 ID:c97hhu/X
>>326-327 ありがとうございます!出来ました。
_root使えなくなった代わりにMCつくるのと似たような感じですね。
その辺の仕組みを理解してないので勉強しときます。
>ところでmcApointってほんとに関数?
関数じゃなくて変数ですね、失礼しました。
サンプルになるソースは分からないけど セガの研修をまとめたとかいうゲームプログラミングの本が評判いいみたいよ。 ソースはC++だと思うけど。
330 :
Now_loading...774KB :2009/05/24(日) 15:51:16 ID:VOdDNoLv
AS3です。 var ldr:Loader = new Loader(); ldr.load(new URLRequest("toLoad.swf")); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); 本とかで上のスクリプトとぶつかりました。 swfファイルをロードする内容なんです。 contentLoaderInfoは、LoaderInfoクラスのプロパティなんですが、 ldrは、Loaderクラスです。 LoaderInfoクラスは、Loaderクラスの継承を受けていないはずなんですが、 継承受けていないクラスのオブジェクトに対して、プロパティを設定すること あるのでしょうか?
委譲っていって、 あるオブジェクトが他のオブジェクトのインスタンスをプロパティに持っていて 自分で処理する代わりにプロパティに持っているオプジェクトに処理してもらうって やり方もあるよ。spriteのgraphicsなんかもそうだよ。
332 :
Now_loading...774KB :2009/05/24(日) 16:47:26 ID:VOdDNoLv
>331さん ありがとうございました。勉強になりました。 あの、ところでこれって基本的なASの知識でしょうか?
さぁ、どうだろう。 AS3のプログラマって、Javaとかから来たプログラミング経験豊富な人と デザイナーで初めて触った言語がAS3とjavaScriptぐらいって人と2分化してる気がする。
その間の人ってなによ?
335 :
278 :2009/05/24(日) 17:47:19 ID:kIMu7nv9
>>281 ものすごい亀ですが、ありがとうございました!
詳説ActionScript3.0 ちょっと当たってみます!!
336 :
Now_loading...774KB :2009/05/24(日) 17:52:25 ID:VOdDNoLv
プログラマー上がりの人には、かなわないですよね。 AS3になって実感してます。
すみませんが教えてください。 AS1なのですが、MC自体の横幅縦幅のサイズを知る方法はあるでしょうか。 例えば50*50のMCなら50という値を返して欲しいんです。 _xscaleはパーセンテージだから100としか返さないので困っています。お願いします。
_widthと_height。
339 :
Now_loading...774KB :2009/05/24(日) 23:40:47 ID:VOdDNoLv
MC.width
340 :
Now_loading...774KB :2009/05/24(日) 23:45:38 ID:VOdDNoLv
あ、すまね。AS1だったね。
_widthでtraceしてみたのですが何故か0が返ってきました。AS1ではできないんでしょうか。
342 :
Now_loading...774KB :2009/05/25(月) 01:23:46 ID:UKhMJ5yX
MXもAS1だよね。 だったら、_widthと_heightでOKなはず。 ただ、FLASH5もAS1だけど、使えるコードが少なかったような、、。 とうことでFALSHのバージョンは?
343 :
Now_loading...774KB :2009/05/25(月) 01:35:11 ID:UKhMJ5yX
すまん。調べたらFLASH5でも _width と _height は使える。 なので、シンタックスのミスかも。 ソースを公開すれば誰かが助けてくれるはず。
読み込み終わってないMCのサイズを測ろうとしてるとかな。
とりあえず落ち着きましょう。 0なら恐らくMovieClipは何も描画していない空の状態。 線一本でも描けばたぶん変化するよ。
346 :
Now_loading...774KB :2009/05/25(月) 02:03:17 ID:UKhMJ5yX
ずっとActionScriptばかり触ってたら、CSS忘れてしまったよ。がくし。
347 :
Now_loading...774KB :2009/05/25(月) 05:05:51 ID:keTF7ivx
環境はFlashCS3 ActionScript3.0です。 プリローダーについて質問させてください。 読み込みが完了していても、なめらかに100パーセントまで少しずつ動作する プリローダーはどうやったら作れますか? 横に伸びるローディングバーと、進捗を示すパーセンテージを表示したいです。 よろしくお願いします。
348 :
Now_loading...774KB :2009/05/25(月) 06:07:25 ID:UKhMJ5yX
ロードの完了をプリローダーの80%に設定する。 ロードが始まったら、ローダーの時間を測る。 ローダー時間×0.2で残り20%を伸ばす。 パーセント表示も同じ。
なんと、そんな方法あったのか。 347じゃないけど、勉強になった。
>>348 私も勉強になった。
こうしないと、一瞬だけ進捗表示が行われ画面がバグっている様に見えるんだよね。
341です。
>>342-345 attachMovieClipで複製したMCの1フレーム目にtrace(_width)と書いてたんですが、
>>345 さんの言う通り何も描画してなかったのが原因みたいでした。
お陰様で今ではきちんと取得できてます。皆様本当にありがとうございました。
FLASH(AS2)で複数の音素材を同時に再生したいのですが、 s1=new Sound(); s1.attachSound("sound1"); s2=new Sound(); s2.attachSound("sound2"); s1.start(); s2.start(); とすると0.2秒くらいずれます。 ぴったり同時で再生することはできないのでしょうか?
353 :
Now_loading...774KB :2009/05/26(火) 00:06:28 ID:8XAddzqb
これでどうだろう。テストしてないからわからんけど。 s1=new Sound(); s1.attachSound("sound1"); s2=new Sound(); s2.attachSound("sound2"); function playsnd() { s1.start(); s2.start(); } this.playsnd();
>>353 ありがとうございます、早速試してみたのですが、私の環境ですと
・初回はずれる
・2回目はずれないこともある
のような感じでした。
同時再生ってこんなに大変なんですねー。どうしよう。
ハードウェアの依存かもしれないけど、経験上、 サウンドの再生/停止/設定の変更は最大で(約)0.3秒程遅延する事があるよ。 この場合はsound1と2を波形編集でソフトで合成した3を作って再生とかどうかな? 善意は否定しないけど、明らかに間違った知識を吹聴する人が最近いるね・・・
>>355 同時にならしたい音を最初から合成してしまう、というのは最終手段だと考えています。
それだとファイル数が1000を超えてしまいそうなのです。
ずっと調べてたんですけど、FLASHは音の再生タイミングをコントロールできないみたいですね。
かといってFLASH以外でウェブで使えるものでコントロールできるものがあるかというと・・・
Player10でAS3なら動的に合成すれば両方完全にそろえれると思うけど、 いずれにしろこれだけのことしたいだけなのに面倒ってのはあるねぇ。
359 :
Now_loading...774KB :2009/05/26(火) 01:35:59 ID:H27TRtYb
>>348 の仕様でローダーを1フレームに設置して、
読み込んだら2フレームに移動ってのをどなたか作ってくれませんか。
コードが見たい・・・。
360 :
Now_loading...774KB :2009/05/26(火) 02:13:32 ID:zfyatJqi
as3.0でDictonaryの要素数を知るメソッドがないみたいですが、 知ることはできないのでしょうか?
361 :
Now_loading...774KB :2009/05/26(火) 10:05:07 ID:K+S20HpJ
FlashLite1.1でモバイルサイトを作っております。ボタンを使ってスクロールさせているのですが、そのMCの中にある写真をMCの外にある(スクロールの為に使っているボタン)でrolloverで画像を切り替えたいのですがスクリプトがわかりません。
こんな質問で本当に申し訳ないのですがどうか諸先輩方ご教授頂ければ幸いです。
コチラを参考にして作りました。
ttp://www.plusmb.jp/2008/11/28/1368.html よろしくお願いします。
>>360 無いねー。for eachで走査するのがてっとりばやいかな
それか自前で拡張するか。ちょいと行儀悪いけどこんな感じ
クラス作ってもいいんじゃない?
//getCountメソッドを追加
Dictionary.prototype.getCount = function(){
var c:int=0;
for each(var o:* in this)if(o != this.getCount)c++;
return c;
}
//Dictionaryのインスタンスに2要素を追加
var dic:Dictionary = new Dictionary()
dic["a"] = 0;
dic["b"] = 1;
//メンバ数を取得
trace(dic.getCount())
363 :
Now_loading...774KB :2009/05/26(火) 15:50:59 ID:+Hc/B5u3
>>362 なるほど、結構不便ですね。
要素はたいした数じゃないのでとりあえずfor eachでカウントします。
ありがとうございました。
>>364 BitmapDataクラスを使ってビットマップで描画すればよい
すみません Flash CS3 + AS2です。 AS3.0で mouseChildren で、MCの子供のマウス制御を無効に出来たかと思います。 急遽AS2での開発が必要で同じ事を再現したいのですが、可能でしょうか?
368 :
358 :2009/05/26(火) 21:23:54 ID:WcnMoIaf
action scriptのサウンド関連のリファレンスとかってネットにありますか? 書籍はただ再生する程度のレベルの話しか書かれてませんでした・・・
>>365 それはそうなのですが・・・
一応始点と終点を点で補完する形でビットマップの線を再現できました
これ以外に方法があるでしょうか?教えていただければ嬉しいです。
>>367 ありがとうございます
なるほど
今回だけはどうしてもAS2でなきゃいけないので
ほかに代替え処理が思いつかないので、子供を全部配列にい入れて処理するようにしました
FlashCS3 AS3.0 プログラム勉強中で、参考書にあったサンプルの意味がわからんので教えてほしいです。 「配列の指定した位置の値を消す関数」 ------------------------------------------------------------ function deleteAt(tmplist:Array, pos:uint):Array { var newlist:Array = new Array(); if (pos==0) { newlist = tmplist.slice(1); } else { var list1:Array = tmplist.slice(0, pos-1); var list2:Array = tmplist.slice(pos+1); newlist = newlist.concat(list1, list2); } return newlist; } var vList:Array = new Array("a","b","c","d","e"); vList = deleteAt(vList, 0); trace(vList); vList = deleteAt(vList, 2); trace(vList); ------------------------------------------------------------ ここでの var list1:Array = tmplist.slice(0, pos-1); の、「slice(0,pos-1)」ってのはどういう処理になるの? 配列を複製するsliceにpos-1っていうのが意味がよくわからないんだ。
flash8 AS2です。 イライラ棒のようなものを作ろうと考えています。 start_mc2.onRelease = function(){ xMus = _xmouse; } cose_mc2.onMouseMove = function(){ if(xMus<_xmouse){ this._x -= (_xmouse-xMus); xMus = _xmouse; } } スタートボタン(start_mc2)を押してマウスがX方向に移動するたびにコース(cose_mc2)の先が見えるような記述を書いたのですが、 フレームの端のほうまでマウスが動いてしまった場合にコースの先が見えずに詰んでしまいます。 そこでマウスを常に中央に表示したままマウスを動かしコースを表示させたいのですが、どのように記述すればよいでしょうか?
>>371 ヘルプを見てみよう:
> Array.slice( startIndex, endIndex):Array
> 元の配列から一連のエレメントを取り出して、新しい配列を返します。
> 元の配列は変更されません。返される配列には、startIndex エレメントから
> endIndex の前のエレメントまでのすべてのエレメントが含まれます。
たとえばこういう動作をしてみよう。
var vList:Array = new Array("a","b","c","d","e");
var test = vList.slice(0, 2-1);//pos-1のこと。
trace(test)
出力結果は「a」。testは0番目から1番目の手前(=0番目)までの要素の配列になったからだ。
あとは分かると思う。
374 :
Now_loading...774KB :2009/05/27(水) 01:35:54 ID:dV/0U6KP
削除したい場所までを複製 削除した場所からあとを複製 それらを連結 してるだけ
仕組みはともかく、なんで要素削除するのにsplice使わないで自作関数作ってんだろうな? 元の配列変えてもいいならそっちのが楽だろうに
質問です。 BlazeDSって、サーバーサイドJavaの処理を、Flashからリモート呼び出しできますよね。 このときAMFっていうバイナリ通信プロトコルを使うっていう考えは合ってますか? JavaScriptから、BalzeDSで用意したサーバーサイド処理を呼び出したいのですが、 HTTP Adapterってのを使えばできるんでしょうか?
>>375 >>371 で「参考書にあったサンプルの意味がわからんので教えてほしいです。」って
言ってたから、その参考書がArrayオブジェクトのメソッドの理解を深めるために
あえてやってるんじゃね?
設置している場所が_root.testのシンボルを_root.test2.testと言うようにtest2の中へ移動するにはどうすればいいでしょうか?
_rootってことはAS2.0以前かな? それだと移動は無理 同じシンボルからインスタンス作って、同じパラメータ設定するしかない
380 :
Now_loading...774KB :2009/05/29(金) 20:09:09 ID:fj71XBKA
WinXPでFlashCS3(AS3.0)です。 カンマ区切りの文字列tmpStr1を var arr0:Array = new Array(); で宣言したarr0に格納するため、arr0 = tmpStr1.split(","); と書きました。 ところが、検証用の出力trace (arr0[1]); では何も出ません (エラーも出ません) 何が問題なのでしょう?
CS3でAS3を弄り始めたんですがさっぱりうまくいきません('A`) リンケージされたmc1、mc2、mc3を用意して、 どれか一つをAS上からランダムに表示させたいと考えています。 が、下記スクリプトを実行すると 『コンストラクタ以外にインスタンス化が試行されました。』と言われてしまいますorz var i = Math.floor(Math.random()*3+1); var mcshow = new ["mc"+i](); stage.addChild(mcshow); どこが間違ってるのでしょうか…
>>381 var mcshow = new ["mc"+i]();
こんな書き方初めて見た。この記述の由来は何?
383 :
381 :2009/05/29(金) 20:34:11 ID:rLu6tYAB
レスありがとうございます。 やっぱりそこがおかしいんですね…由来は特にありません、でっちあげです…。 任意の変数をインスタンスの指定に利用するには、 配列アクセス演算子は使えないのでしょうか。
>>379 やっぱり無理ですよね
ありがとうございました
385 :
Now_loading...774KB :2009/05/30(土) 06:01:55 ID:HtgParva
386 :
Now_loading...774KB :2009/05/30(土) 11:39:44 ID:19tuxnk5
as3.0・CS3です。 flaのドキュメントクラス上で var basePage:BasePage = new BasePage(); addChild(basePage); var page1:Page1 = new Page1() base.addChild(page1); var page2:Page2 = new Page2() base.addChild(page2); 大体このような構造です。 BasePage・Page1・Page2クラスはスプライトを継承しています この状態でPage1のクラス上からPage2の変数にアクセスが必要になったのですが、どのようにすれば良いのでしょうか ご助言をどうかお願い致します
>>381 getDefinitionByNameを使えばいけるんじゃないかな
それか3つのうちからランダムだったら単純にリストで管理してもいいんじゃない?
こんなで
addChild(new [ClassA, ClassB, ClassC][Math.random()*3
>>0 ]());
質問お願いします。
環境FlashCS3 ActionScript2.0
現在、初めてフラッシュでサイトを制作しているものです。
http://be4you.jp/arthabitat/ ↑
ここに製作途中のサイトがあるので、見ていただくとわかりやすいと思うのですが
質問が2つあります。
@サイトを開いて何度か更新しないとメインのswfが表示されません
(サーバーを変えても同じ)一発で表示させる方法を教えてください
A何度か更新を押してメインのswfが表示されても
ローディングバーと数字部分が伸びないので解決方法をお願いします。
(ローディングバーは最初から制作された素材で配置するだけで使用可能と書いてありました)
>>388 早速、お邪魔させて頂いたが……
まったくFlashが表示されない。
ロゴが表示されるだけで動きもない。
これだけだと、どういう動作を期待しているのか分からん。
IE8、スレイプニル2.8.5、どちらでも同じだ。
5回更新したが、変化無し。
ローカル環境で表示されたの?
swfは2つで、片方がもう片方をロードするの?
URLの指定は絶対アドレス、それとも相対?
分からない事が多すぎて答えようがない。
>>388 top2.swfは直接呼べば表示される。
jsのどこかにミスがあるのか、
ひょっとして単にファイルが重いせいかな?
とりあえずjsを使わずに表示させて見れば?
具体的には
<script type="text/javascript">
AC_FL_RunContent( ー略ー ); //end AC code
</script><noscript>
と
</noscript>を削除
Aの「ローディングバーと数字部分」
確認出来なかった。
借り物のパーツならもう一度使い方を確認してみれば。
とりあえずソース出すなりしてもらわないとわからないかも
391 :
Now_loading...774KB :2009/05/31(日) 17:55:22 ID:qYQQhxTb
AS3.0を勉強してます。 canvas.graphics.drawRect(0,0,100,100) 上のコードが オブジェクト.+プロパティ.+メソッド の順にならんでいるのが、なんだか理解できません。 こういうものなのでしょうか? それとも特別なんでしょうか?
if (useAutoGrid)
{
spacer++;
if (spacer == columns)
{
spacer = 0;
contentYpos += loader.content.height + verticalPadding;
contentXpos = -loader.content.width - horizontalPadding;
}
// increment content x
contentXpos += loader.content.width + horizontalPadding;
}
http://www.blog.noponies.com/archives/61 ここで配布されてるAS3でパンやズームを実現するLayOutクラスで
どうして、オートレイアウトで次の行に行く時、前に呼び込んだローダーのコンテンツ分だけ
次のコンテンツの座標をマイナスするのか必死で考えても分からん。
次の行に行くんだからy座標に前のコンテンツの行の高さとパディングを足すのは容易に
理解できたんだけど
>>391 var graphics:Graphics = canvas.graphics;
graphics.drawRect(0,0,100,100);
と呼ぶのと同じ事だからだよ。
わざわざ、これだけのために変数を用意してたら大変じゃない。
394 :
Now_loading...774KB :2009/05/31(日) 20:35:47 ID:qYQQhxTb
393さん。ありがとうございます。 同じような理由で、 graphicsプロパティでなくても オブジェクト.+プロパティ.+メソッド と並ぶことはあるのでしょうか?
それだけじゃなく メソッドチェーンといって object.callA().callB() みたいに使えるクラスを書く人もいるよ。 問題はプロパティやメソッドが何を値として返すかと、 ドット演算子が左から右に評価(演算)されるって事で、 左が評価されて値が返ってきたら、その値がオブジェクトの場合は そのオブジェクトのメソッドを呼べば繋げて書いて問題ないんだよ。
397 :
Now_loading...774KB :2009/05/31(日) 21:57:14 ID:qYQQhxTb
ありがとうございます。 左から返ってきたものが、オブジェクトと同等ならば こういうシンタックスもありなんですね。 こういうのってAS本にはソースには載せてあっても 解説しているのは無いように思います。(あるかもしれないけど。) すっごく勉強になりました。ありがとうございました。
400 :
Now_loading...774KB :2009/06/01(月) 20:54:47 ID:x3zHjDFt
質問! スクリプトを書くとき、皆さんフローチャートとか書いたりしています? 自分はフローチャートとはいわないけど簡単な道順を書いたりしてます。 最近、長いスクリプトを書くうちに、きちんとフローチャートを 書いたほうがよいように思ったりしてます。 僕はデザイナー出身ですが、ここにはプログラマ出身のかたも いらっしゃるようなので、どうなんでしょうか? UMLとかゆくゆくは勉強したほうがいいですか?
398です。
>>399 ご教授いただきありがとうございました。
399さんが教えてくれたようにスクリプトを変更したのですが
動かなかったのですが、別のローディングバーを入れたらちゃんと動きました!
今回初めてフラッシュでサイトを作るのでまたここにお世話になると思いますので
その時はまたよろしくお願いいたします。
よく大きな画像を動かすときはモザイク上にしていて、 動きがとまると、画像のモザイクが消えていって表示というエフェクトをみますが、 あれってどうやってるんでしょう? 考え方、アルゴリズムだけご存知の方教えてください。
402です すみません、そもそもなぜモザイクにしたほうが 負荷が減るのでしょう?という質問意図でした。
>>403 チラシとか表示するサイトでは、はじめに表示される低解像度の
イメージを拡大・スクロールし、表示範囲の移動につれて高解像度
イメージを表示したりするけどそういうことかね。
高解像度のイメージの表示にはダウンロード時間も表示の負荷も
かかるからそうやってかいひしてるってことでは。
>>400 そりゃ勉強できればした方がいいに決まっている。
でも、個人で小規模のFlash制作を完結させているなら、必須では無いと思う。
デザイナー出身とのことなので、3Dスキルを磨いた方が周りに喜ばれるかもしれないぞ。
>>402 方法は2つあると思う。
一つはPhotoshopなどで段階的にモザイクを入れた画像を用意し、Flash上で切り替える方法。
もう一つはASで実現する方法だ(BitmapDataクラスなどを使う)。
動画を作るなら、前者の方法が良いだろう。
この方法はモザイク以外にも応用が利き、Photoshopなどをお持ちならば色々な可能性が広がる。
スクリプトのデバッグも不要なので、スケジュールの見積もりもしやすいだろうね。
デメリットはダウンロードサイズが大きくなる事。
On2VP6、H.264動画を作るなら、こちらをオススメしたい。
後者はダウンロードサイズを抑えられる。
デメリットはスクリプトのデバッグ用の時間を取らなければならない事、動作イメージを確認
しながら制作するのが面倒になる事だろうか。
>>404 割とシームレスにモザイクから、
徐々に高解像度につながっていくような感じなんですけどね
一枚の大きな画像をバラバラにbitmapが読んでいく感じです。
ということは、bitmapで一度画像をばらして、
それらを分散して読んでるってことですかね
書いててそんな気がしてきたですね
>>406 単純に視覚効果を狙ったもの、ロード時間や負荷低減を狙ったもの、
それから負荷軽減を視覚効果まで高めたものなどがあると思う。
実用性・アート性などどの方向に振ってるかで表現方法もかわってくる。
「このサイトみたいな感じで」とか実例を振ってもらったほうが良いかもね。
>>400 オブジェクト指向的設計においてフローチャートは害悪でしかない
>>408 フローチャートって基本じゃないの?
その上でのオブジェクト指向だろ
何をもってして害悪って言ってるのかがわからんが
自分もUMLとか全然詳しくないけど、 デザイナーが実際にデザインする前にレイアウトのスケッチを書いて 配置決めておくように、プログラマーは実際にクラスを書く前にどういう クラスを作るかをメモっておくと、後から大規模な変更で苦労しなくて済む ぐらいの感じで捉えてる。 フローチャートはどうだろう、そこまできちんと決めていなくても、 後から結構変更きくんじゃないだろうか。
UMLだろうがフロー図だろうが必要になれば自然に書くよ 頭でっかちで意味も分からずに信奉したり切り捨ててる奴は放っておけばおk
441 これいいですね。一般的なフロー図とはちがうようだけど。。
趣味でやってる分には余程はじめから本格的なシステム組もうと 思わない限りは書かないしなあ 作ってる途中で中断、時間が開いて再開時に?になるのはいつものことだ
>>373 あーなるほど!!すごい理解した。
トンクス!!!!11
as3で、読み込んだXML操作してるんですが、 XMLオブジェクトに、あるElementが存在するかどうかというのは、 どうやって調べればいいのでしょうか? var xml:XML = <foo> <element1> text </element1> </foo>; このとき"element1"が存在して、 たとえば"element2"は存在しない、ということを調べたいです。
as3で、任意のレイヤーを表示したり非表示にしたりってする操作は出来ますか?
>>416 私なら、xml.elements("element1")、xml.elements("element2")の様にアクセスするかな。
成功すれば取得、失敗すればundefined。
例外も出ないし、多数の要素を読み込んだ後に必須項目が揃っているかをまとめてチェッ
クすればスクリプトも見やすくなる。
>>418 レイヤーに対してどうこうする事はできない。
ムービークリップにして、そのvisibleをfalseにすれば、要求を満たせると思う。
>>419 レスありがとう。
レイヤーのコントロールは出来ないのですね。
ムービークリップの方法を試してみようと思います。
421 :
初心者 :2009/06/03(水) 19:01:22 ID:s3KYP8fp
すみませんアクションスクリプト初心者です。 下のメッセージボードのソースはそれぞれ何をしようとしてるソースか 1単語づつ調べたのですがいまいちわかりません・・・ 凄い迷惑な質問かもしれませんがどなたかバカでもわかりやすく説明していただけないでしょうか? ----------------------------------------------------------------- function SetColor(obj) { myColor = new Color(obj); myColor.setRGB(_root.load_mc.bc);} System.useCodepage = true; stop();
422 :
初心者 :2009/06/03(水) 19:07:35 ID:s3KYP8fp
------------------------------------------------------------------ onClipEvent(load) {if (_parent.t_url == null) {this.loadVariables("msgboard01.txt");} else {this.loadVariables(_parent.t_url); }} onClipEvent(data) {_parent.gotoAndStop(2);} onClipEvent(keyDown) {if (Key.isDown(17) && Key.isDown(32)) { _parent.attachMovie("copyright", "copyright", 1); _parent.copyright._x = (300 - copyright._width) / 2; _parent.copyright._y = (200 - copyright.height) / 2;}} -------------------------------------------------------------------- function doscroll(num) { with (msg) {scroll = scroll + num;}} _root.SetColor(btn_up); _root.SetColor(btn_down); title = _root.load_mc.title; msg = _root.load_mc.txt; ---------------------------------------------------------------------
僕も初心者ですが、勉強のつもりでコメントつけてみました。 誤っているかもしれませんが。こんなものかと思います。 オブジェクトがどういったものかわからないので、多分ほかの人も コードは読めてもその意味はわからないかと思います。 //SetColor関数の設定 function SetColor(obj) //myColorにcolorクラスを設定 {myColor = new Color(obj); //myColorを塗りつぶす。※引数が間違っているような。。 myColor.setRGB(_root.load_mc.bc);} //通常のコードを使います。 System.useCodepage = true; //ムービーを停めます。 stop(); //このムービーが読み込まれた時 onClipEvent(load) //もし、_「parent.t_url」が空だったら {if (_parent.t_url == null) //msgboard01.txtを読み込ませます。 {this.loadVariables("msgboard01.txt");} //空でなかったら else //「_parent.t_url」を読み込ませます。 {this.loadVariables(_parent.t_url); }}
//外部データを読み込んだら、親のムービーを2フレームに移動させ停めます。 onClipEvent(data) {_parent.gotoAndStop(2);} //キーが押された時 onClipEvent(keyDown) //CtrlキーSpaceキーだったら。 {if (Key.isDown(17) && Key.isDown(32)) //ライブラリーからcopyrightというムービーを生成します。 {_parent.attachMovie("copyright", "copyright", 1); //copyrightを指定の位置に配置します。 _parent.copyright._x = (300 - copyright._width) / 2; _parent.copyright._y = (200 - copyright.height) / 2;}} //doscroll(num) 関数の設定 ※ここでは読まれていない。 function doscroll(num) { with (msg) {scroll = scroll + num;}} //SetColor関数呼び出し _root.SetColor(btn_up); _root.SetColor(btn_down); //title変数を代入 title = _root.load_mc.title; //msg変数を代入 msg = _root.load_mc.txt;
425 :
初心者 :2009/06/04(木) 17:00:16 ID:/08z+uwx
>>423 >>424 お礼が遅くなってすみません
本当にありがとうございます!
今423、424のレスを見ながら勉強させてもらっています。
ActionScriptというものは自分にとって難しく、
聞きたいことが多すぎて次にどう質問したらいいかまだ固まっていませんので
まずは教えてくれたことにお礼をさせてください
頭が整理できたらまた来ると思いますので、その時もよろしくお願いいたします。
いいってことYO。ww。 それより、今から勉強するなら、 AS3.0(CS3以上)を勉強したほうがいいよ。
427 :
Now_loading...774KB :2009/06/05(金) 04:52:03 ID:XEIlAOr4
WinXP-Pro(SP2),FlashCS3(AS3.0) Tabキーのフォーカス制御で質問です。 テキストフォームに入力している途中にTabを入れようとTabキーを押したところ、 フォーカスが移動してしまい、Tabを使った入力が不可になってしまいました。 tabIndexで制御を試みましたがダメでした。 通常のワープロソフトのように あいう|えお → あいう えお とするにはどうしたら良いでしょうか?
hoge.tabEnabled=false;
AS3で、1つの外部PHPから2つの変数を読み込むことってできないですか。 どうしても先にprintしたほうの変数の中に後ろのほうも含まれてしまいます。 <?php $answer1 = 100; $answer2 = 200; print "returnA=".$answer1; print "returnB=".$answer2; ?> とすると、 returnA = 100 (改行)returnB = 200 と、returnAの中にreturnB=200というのも文字列として含まれてしまいます。 一つのphpから、2つの変数をFlashに持たせたいということなんですが、 それって可能でしょうか?
>>429 name=value&name=value
432 :
Now_loading...774KB :2009/06/06(土) 04:15:28 ID:BA3lWJ0T
すみません、TextAreaが使えないのですが、分かる方いらっしゃいますでしょうか? 具体的には import fl.controls.TextArea ; で「見つかりません」というエラーになってしまいます。 というか import flash.* は全部大丈夫のようなんですが import fl.* 関連は全滅のようです。 ActionScript3.0です。
433 :
432 :2009/06/06(土) 04:24:04 ID:BA3lWJ0T
Flashのインストールされてるフォルダ内に入っていたflフォルダを自分のプロジェクトの所にコピーしたらビルドできました。 でも、こんなことする人いないですよね。 どこかでパスを設定できるんでしょうか?
>>433 Flash CS4を使用していると見なして説明する。
なおCS3の場合、若干違う。
ファイル→パブリッシュ設定→Flash→ActionScript 3.0設定で指定できる。
ソースパスに持ってきたasファイルが元あった場所を指定すればいい。
環境設定でも同様の事が出来る。
こちらはグローバルなので全プロジェクトに適用される。
でも、flフォルダに関してはこの操作は不要のはずなのだが。
〜\Adobe Flash CS4\Common\Configuration\Components\User Interface\TextArea.swc
こちらのSWCライブラリを見に行くのが、デフォルトの動作。
asファイルは参考までに入れているだけで、パブリッシュ時はSWCライブラリ側を見に行く。
SWCライブラリは足りているのだろうか。
>>431 429です。ありがとうございます めちゃ簡単でしたね・・・・
>>434 大きな画像のロード処理とか、複数のシーンのスムーズ遷移は
ActionScript使ったほうが奇麗にできる。
ちょっとHTMLに動きつけたいだけなら、JQueryつかったほうが遥かに簡単。
あと、同じECMAScriptベースといっても
Flashはコンパイル処理されるので、Javaなどのコンパイラ言語に近づけたほうが
コンパイラによるエラーチェックや処理の最適化がしやすかったんじゃないかと思う。
逆にECMAScript5は今あるECMAScriptとの互換性を重視した感じで、Javaなんかの
プログラマを取り込まなくても十分やっていけるっていうか、ブラウザ標準なんだから
当たり前なんだけど、そういう余裕を伺わせる仕様な感じがした。
JohnRisingのところでECMAScript5はまとめてる。
http://ejohn.org/blog/ecmascript-5-objects-and-properties/
439 :
432 :2009/06/06(土) 21:36:21 ID:QsPdjpwi
>>435 ありがとうございます!
無事ビルドできました。
441 :
Now_loading...774KB :2009/06/07(日) 13:54:46 ID:r+6FAhtD
FlashCS3(AS3.0)をWinXP-Proで使用 MCにリンケージしたクラス変数へのアクセスで質問です。 Stage上に配置したCubeStageというMC(インスタンス名:cubeStage)に「Cube_MC01」 というpapervision3dにより立体を生成するクラスをリンケージさせました。この中には var cubeSize:int=200;という変数があり、これにアクセスしたく思っています。 別のMCをクリックして trace(getChildByName("cubeStage")); trace(MovieClip(cubeStage)); は共に [object Cube_MC01] と出るのですが、trace(MovieClip(cubeStage).cubeSize);は #1069: Cube_MC01 にプロパティ cubeSize が見つからず、デフォルト値もありません。 になります。 どうすればアクセスできるのでしょうか?
そりゃ普通に cubeStage.cubeSize でいいんじゃねーの? 回りくどく行くなら var c:Cube_MC01 = getChildByName("cubeStage") as Cube_MC01; trace(c.cubeSize) とか?
>>442 レス有難うございます。
cubeStage.cubeSize と
var c:Cube_MC01 = getChildByName("cubeStage") as Cube_MC01;
trace(c.cubeSize)
の両方で試しましたが、
1178: アクセスできないプロパティ cubeSize へのアクセスを、静的型 Cube_MC01 の参照を使用して試行しました。
と出ます。
Cube_MC01からはStageの変数にアクセス出来るのですが・・・
444 :
Now_loading...774KB :2009/06/07(日) 20:09:32 ID:vqjP5J1E
AS3 (CS3)を使っています。質問させてください。 ライブラリ内に簡単なMCがあります。このMCには空のダイナミックテキストエリア(txt)を配置しています。 このMCをステージに5つほどコピーし、各MCのインスタンス名を、hoge1,hoge2,hoge3,hoge4,hoge5と設定しました。 この各オブジェクトのダイナミックテキストエリア(txt)にそれぞれのインスタンス名を表示させたいと思っています。 それで以下のようなスクリプトをステージのタイムラインに書いてみましたがうまくいきません。 どうすれば、各インスタンスにそれぞれのインスタンス名を表示できますでしょうか? できれば、ループを使用したスクリプトをつかいたいです。 for(var i:int =1 ; i<=5; i++);{ getChildByName("hoge"+i).txt.text ="hoge"+i } どうぞ宜しくお願いします。
>>444 iはintだろ? なら、"hoge"+i はStringとInt
for(var i =1 ; i<=5; i++) ならどう?
つーか、何でここにセミコロンがある → ++);{
446 :
444 :2009/06/07(日) 20:58:00 ID:vqjP5J1E
445さん。レスありがとうございました。 >つーか、何でここにセミコロンがある → ++);{ あ、すいません。ご指摘ありがとうございます。 for(var i =1 ; i<=5; i++) 先の件を修正して、上記のループを設定しましたが変わらずエラーが発生しました。 エラーの内容は以下のとおりです。 未定義である可能性が高いプロパティ txtに静的型flash.display:DisplayObjectの参照を使用してアクセスしています。 ライブラリも、それからコピーしたステージのMCにも、直下にtxt名でダイナミックテキストエリア設定しているのですが、、。
>>443 cubeSizeってのがpublicになってねーんじゃねーの?
>>444 getChildByNameの戻り値はDisplayObjectだからキャストしてやればいいんじゃね?
trace((getChildByName("hoge" + i) as MovieClip).txt.text)
キャストとか面倒なら配列アクセス演算子ではしょってもいいんじゃ?
trace(this["hoge" + i].txt.text)
それからデザイナー上がりとかでとりあえず動きゃいいレベルの人で 特にプログラム勉強する気無いならstrictモードはずした方がいいよ パブリッシュの設定のAS3.0の設定項目にチェックあるから
それはずすと型チェックがゆるくなる
451 :
444 :2009/06/07(日) 21:29:39 ID:vqjP5J1E
448さん、ありがとう。できました!! 以下に直してできました。 (getChildByName("hoge" + i) as MovieClip).txt.text ="hoge"+i > getChildByNameの戻り値はDisplayObjectだからキャストしてやればいいんじゃね? MCのクラス(MovieClip)のテキストプロパティでなのに、 参照していた戻り値が DisplayObjectクラスになっていたということでしょうか? as を使えば、クラスが違っても参照できるんですね。
452 :
444 :2009/06/07(日) 21:33:25 ID:vqjP5J1E
つれづれすいません。 strictモードをはずしたら元のソースでも問題なかったです。 勉強になります。ありがとうございました。
453 :
Now_loading...774KB :2009/06/07(日) 23:24:59 ID:Hf9QwiLJ
WinXP+CS4で質問です。 ネットで公開されているクラスを導入しようとしているのですが、どうしても上手くいきません。 以下は状況です。 配置: C:\Program Files\Adobe\Adobe Flash CS4\ja\Configuration\ActionScript 3.0\Classes\org\hoge 以下 パブリッシュ時のクラスパス指定(絶対パスで指定) C:\Program Files\Adobe\Adobe Flash CS4\ja\Configuration\ActionScript 3.0\Classes ドキュメントクラス内でのimport import org.hoge.*; こう指定して、hogeフォルダ内のFuga.asで定義されていた静的クラスFugaを使おうとすると 「未定義のプロパティFugaへのアクセスです」エラーが出ます。 hogeフォルダをマイドキュメントに移動させ、絶対パスで指定しても同じエラーでした。 またライブラリパス、外部ライブラリパス、どちらに記述しても同じ結果でした。 配布元でCS4上のバグフィクスを行なったばかりとの事なので、先方が間違っている 可能性よりはこちらの設定ミスの可能性が高いと思います。 どのようにクラスパスを設定すればいいでしょうか?
AIRでアプリを作っています。 ウィンドウにファイルをドラッグアンドロップすると データグリッドにそのファイル名が表示され、 「クリップボードにコピー」というボタンをクリックすると そのデータグリッドにある全てのファイル名をクリップボードにコピーするアプリです。 データグリッド上で選択したファイル名をクリップボードにコピーは以下のコードで出来たのですが、 データグリッドの一番上から一番下まで全てのファイル名をクリップボードにコピーするにはどうしたらいいのでしょうか? function clipboardpaste(event:MouseEvent):void{ var foo : Clipboard = Clipboard.generalClipboard; var filename : Object = dg[0].selectedItem.name foo.setData(ClipboardFormats.TEXT_FORMAT , filename); }; よろしくお願いします。
>>453 クラスパス指定は「\」では無く「/」を使用する。
この点は大丈夫かな?
それでもアクセスできなければ、internalクラスという事はないだろうか。
これは、パッケージの外からアクセスできない。
勉強するつもりならstrictモードは絶対はずすな
457 :
Now_loading...774KB :2009/06/08(月) 06:00:53 ID:S2b9wYjS
>454 スレ違い。
スレ違い覚悟の新参者です。適切なスレあれば教えて下さい。 DLしたFLASHにURLチェック機能あり、オフラインで見れません。 何かバッチをあててみることができますでしょうか?
>>454 dataProviderプロパティ使ってDataProviderにアクセスして、そっからlengthとgetItemAtでループ処理で行けんじゃね?
>>447 どうも。コンストラクタで
public class Cube_MC01 extends MovieClip {
・・・
var cubeSize:int=100;
・・・
と書いています。まだ解決できません。
もしかしたら、「Papervision3d固有の問題かも?」と思っています。
似たような経験がある人いますか?
それpublicじゃないじゃん public var cubeSize しょ
>>461 アクセス修飾子(public / private など)を省略すると「internal」になる。
この時、パッケージ外からアクセスできない。
>>462-463 有難うございます。
でも、まだ駄目です。
public var cubeSize:int=100;
及び
var c:Cube_MC01 = getChildByName("cubeStage") as Cube_MC01;
trace (c.cubeSize);
としても、
1178: アクセスできないプロパティ cubeSize へのアクセスを、静的型 Cube_MC01 の参照を使用して試行しました。
が出ます。
どうも解決出来ないようなので、この件は保留します。
465 :
453 :2009/06/08(月) 23:06:27 ID:j4nqxdsm
>>455 >>クラスパス指定は「\」では無く「/」を使用する。
はい。念のため/と\の両方で試しています。
また、flaファイルとドキュメントクラスと同じ階層にorgフォルダをおき、クラスパスで
「.」を指定してみましたが、状況は変わりません。
>>それでもアクセスできなければ、internalクラスという事はないだろうか。
クラス宣言(
>>453 で言う"Fuga")にはpublic指定はついています。
コンストラクタが省略されていたので、念のためクラスに
public function Fuga():void{}
を追加してみましたが、状況は変わりませんでした。
いま再度エラーメッセージを確認したところ、コンソールの末尾に
「定義 org.hoge が見つかりません」(import の行)
と出ていました。やはりパスの指定がおかしいのでしょうか?
なんだろね
>>461 の書き方だとそのクラス自体がそもそもMovieClipしか継承して無い書き方だから
papervision3Dのクラスを継承してねーんじゃねーのかな?
その自作クラスのメンバとして委譲させてんのかな?
あと、プロパティ宣言と同時に初期値を代入すんじゃなくて、コンストラクタ内で初期値を代入したらどうかな
なんつーか、自作クラスを普通にリンケージした事ある?
ちょっと根本的なとこ勘違いしてはまってんじゃねーのかな
importできてねーんじゃクラスパスが通ってないわなあ
468 :
Now_loading...774KB :2009/06/09(火) 01:09:22 ID:bCWsoqkr
WinXP+AS3.0(CS3) A.tabEnabled=false; でTabキーによるフォーカス移動を制限しようとしていますが、 オブジェクト(インスタンス)が15個くらいあり、その1個1個に A.tabEnabled=false; B.tabEnabled=false; などとやるのが面倒です。また、今後オブジェクトが増える可能性もあるので、1個を 除いて一気にStageのオブジェクト全てで非フォーカス化する方法はありますか? (つまりフォーカスは基本1個にしか当たっていない) インスタンス名が番号を含んでいれば良いのですが、それが出来るのは精々 2個程度で困っています。
>>468 表示オブジェクトを継承して、自分用のサブクラスを作成する。
サブクラスのコンストラクタで「super.tabEnabled=false;」。
470 :
Now_loading...774KB :2009/06/09(火) 03:02:31 ID:bCWsoqkr
471 :
Now_loading...774KB :2009/06/09(火) 03:23:37 ID:WTWrXujf
AS3を勉強しています。 function hoge(numA, numB){ var answer = numA+ numB return answer } var func1 = hoge; trace(func1(3,4)) var func2 = hoge(3,4); trace(func2); 上記のfunk1 funk2結果は同じですが、 それぞれ文法の意味が全然違うと聞きました。 でも、自分にはよくわかりません。 どう違うのか、考え方をお教えください。
472 :
Now_loading...774KB :2009/06/09(火) 03:32:15 ID:au/ksxR/
>>458 FLASHといえど、URLチェックされているのでは、クラッキングするしかないのでは?
473 :
Now_loading...774KB :2009/06/09(火) 03:41:17 ID:WTWrXujf
458=472 止めてください。お願いです。
>>471 どこがよくわかってないのか分からないけど、プログラムっていうのはメモリの上で
動いてるから、メモリのどの場所にどの関数や変数がおさめられてるかを考えれば
特に難しい事はないっていうか、自分はそういう考え方が一番すっきり納得できるけど。
上は、メモリのどこかにおさまってる関数の参照を変数にいれて別の名前をつけてから
別の名前を使って実行。
下は、メモリのどこかにおさまってる関数の参照を直接実行してその結果を変数に代入
してるだけだよ。
どの場所におさめられてるかは関係なかった。 どこに納まってようが、いちいちそれを複数の変数にコピーしてたら メモリの無駄遣いだから、メモリのどこに納まってますよって情報を 解決できるように別の名前をつけてるだけだよ。
FLASHでサイト作ると、サイトを見る人のモニタの大きさで文字の大きさ変わっちゃうんですけど、 どうしたらいいですか? 画面小さい人には何が書いてるか分からないくらい文字が小さくなっちゃいます・・・。
>>471 func1:hogeという処理(関数)を、変数func1に入れている。
func2:hogeという処理(関数)を、引数3,4で実行した実行結果を変数func2に入れている。
蛇足なことを言うと
下の方は、実行結果を入れている変数なので、func2という変数名は不適切。
479 :
Now_loading...774KB :2009/06/09(火) 14:51:17 ID:aO2BrQdZ
WinXP-Pro(CS3, AS3.0)です。 substringで抜き出した文字(1文字)が候補文字のいづれかに合致しているかを 正規表現で判定したいのですが、うまくいきません。 抜き出した文字Aが あ,い,う,え,お のどれかであればtrueで、それ以外はfalse にしたく思っています。つまり、 Aが「あ」 → true Aが「ろ」 → false しかし試しに var str:String = "あ"; var pattern = new RegExp("あいうえお", "g"); var regObj:Object = pattern.exec(str); trace ("マッチング: " + regObj+"desu"); trace ("テスト: " + pattern.test(str)); // ←※ trace ("文字列: " + str.match(pattern)+"desu"); の場合、 マッチング: あdesu テスト: false // ←※ 文字列: あdesu となってしまい、「あ」が検出されているのにpattern.test(str)でfalseになってしまいます。 どう書き換えるべきでしょうか?
>>479 RegExpのメソッドは、一回実行するとカーソル位置(lastIndexの位置)が更新されるから、改めて使いたいなら初期化しないと駄目だよ
pattern.lastIndex=0;
trace ("テスト: " + pattern.test(str));
あと、それ
/[あいうえお]/g
じゃね?
>>480 できました!
あと、[〜]のご指摘ありがとうございます。
482 :
Now_loading...774KB :2009/06/09(火) 17:25:03 ID:b1mG1Maj
FlashCS4、AS3でランダムにいろんなカード(今のところ32枚) が出てくるプログラムをしたいのですがなかなか上手くいきません。 第一フレームにボタンを用意して、それを押したら結果が表示される。 フレーム2から33までにカードを用意して移動させようと考えています。 addEventListener(MouseEvent.CLICK,startbtn); function startbtn(e) { var r = Math.floor(Math.random *32)+1; gotoAndStop(r); } ありったけの知識でここまでやりましたが、ダメでした。 どなたか、お知恵を貸してください。
>>482 ステージから見てボタン・カードはどこにある?
484 :
Now_loading...774KB :2009/06/09(火) 18:16:51 ID:sjFTTJYQ
483様 ボタンは、第一フレームのステージに。 各カードは、32枚、それぞれフレーム2から33のステージに描く予定です。
>>484 ボタン名.addEventListener(〜
にする必要があるんではないか?
486 :
Now_loading...774KB :2009/06/09(火) 18:50:37 ID:WTWrXujf
var r = Math.floor(Math.random *32)+1; ↓ var r= Math.floor(Math.random() *32)+1;
>>486 あぁそうか、見落としてた。
ボタン名は書かなくてもステージにイベント当たるからその子を押しても大丈夫だもんな。
488 :
Now_loading...774KB :2009/06/09(火) 19:09:46 ID:sjFTTJYQ
486さま 487さま ありがとうございます。 さっそく、試してみます!!! ()をつけることで、これは関数の機能だと指示するんですね!
489 :
Now_loading...774KB :2009/06/09(火) 19:23:48 ID:sjFTTJYQ
結局、これでうまくいきそうです。 あとは、32のシーンを完成するだけです。 本当にありがとうございました☆ stop(); startbtn.addEventListener(MouseEvent.CLICK,startb); function startb(e) { var r= Math.floor(Math.random() *32)+1; gotoAndStop(r); }
>>479 var pattern = new RegExp("あいうえお", "");
にすれば、常に先頭から検索する。
「g」は不要だ。
491 :
Now_loading...774KB :2009/06/10(水) 16:23:45 ID:5UApoAci
CS4使っています。 タイルリストについて質問です。 XMLからデータを読み込んで、タイルリストにロード、アイテム表示させてるのですが、 アイテムによっては、画像を2種類見せたいものがあります(使用時と収納時等)。 そこでリスト内の画像が、5秒ごとにフェードしながら切り替わるようなことが できないかと思ったのですが、これって不可能ですか・・・?
492 :
Now_loading...774KB :2009/06/10(水) 17:25:50 ID:Dg6jr9ju
はじめまして。 Flashで簡単なお絵かきのできるもの(マウスで自由に線が引ける) を作りたいと思っています。FlashMXでAS1を使用しています。 色などをを決めるスクリプトが lineStyle (1, 0x000000, 100); //線の太さ、色、明度 なのですが、ボタンをクリックすると、色は前と同じで太さだけ変わる ものを作ってみたいんです。どう記入したらできるでしょうか?ラインスタイル だけでできますか? わかる方がいましたら教えて下さいませ。
>>492 それはすでに書いたものの太さを変えたいってことなのか?
あるいは次から書く線の太さを変えたいだけ?
494 :
Now_loading...774KB :2009/06/10(水) 17:46:46 ID:Dg6jr9ju
>>493 返信ありがとうございます。
次から書く太さを変えたいのです。例えば赤色のボタン→色を変える
太さのボタン→太さを変える
といったように太さを変える時には今選択している色に影響せず変える事は
できるのかと思いまして。
もっとわかりづらくなってたら申し訳ない;
>>494 var hutosa = 1;
var iro = 0x000000;
var kosa = 100;
//太さを2に
hutosa = 2;
lineStyle (hutosa, iro, kosa);
//・・線を描く処理・・
//色を赤に
iro = 0xff0000;
lineStyle (hutosa, iro, kosa);
//・・線を描く処理・・
ただしこれくらい自分で考えられないとお絵かきを完成するのは難しいかも知れないぞ。
ちょっと基本を勉強しておいたほうが良いかもしれない。
>>495 回答ありがとうございます。助かりました。
自分はコンテンツ系なのでソースを拾いながら作業しているのですが
次回からはもっと勉強してから質問しますね。
お絵かきソフトはできるとこまで頑張ってみます。
質問なのですがAS2でHTTP通信以外の通信は出来ないでしょうか? チャットを作っているのですがsendandload関数を使うと Firefoxで「データを転送しています」と通信するたびにステータスバーに出てきてしまい鬱陶しいです。
498 :
468 :2009/06/10(水) 20:58:36 ID:H3JnwlpM
Tabキーによるフォーカス移動を制限するため、
>>469 さんの方法を試そうと
しましたが、「表示オブジェクトを継承した自分用のサブクラス」をどこに
どう書けばよいのか分かりません。
自作クラスを TabControl_01 として、ドキュメントクラスとRootのフレームアクションに
class TabControl_01 extends DisplayObject {
}
を書きましたが両方ともエラーになりました。
アドバイス願います。
>>497 XMLSocket
でもサーバーも独自に用意する必要があるよ。
なんかひっでえレベルの低さだなこりゃ
>>499 ありがとうございます
ほとんどのオンラインゲーム、チャットはXMLSocketを使用しているのでしょうか?
HTTP通信をしているものを余り見たことがないので
NetStreamで読み込んでいるFLVのバイナリにアクセスする方法ってありますか?
ものすごく初歩的な質問なんですが。
「ActionScript3.0」って、自分はプログラミング言語名だと思ってたんですが
ツール名として使われているらしい記事も見かけます。
例えば
ttp://gihyo.jp/dev/serial/01/as3/0002?page=2 では
「ActionScript3.0では、flaファイル内のスクリプトは
メインタイムラインもしくはムービークリップのキーフレーム内に記述する」
とありますが、この文章での「ActionScript3.0」って
そういう名前のツールのことですよね?
一般的にはどっちを指すんでしょう?
あと、プログラム言語としてのActionScript3.0で、
MovieClipの使い方を説明しているサイトを教えてください。
公式APIを見て、フレームの進め方などは書かれているのですが
あるMovieClipが何フレームからなり、
どのフレームにどのようなオブジェクト、または処理が紐付けられているのか、
という情報を初期化する方法がわからず……。
>>503 その文脈は
(Flash CS3でスクリプトを記述する場合、)ActionScript3.0では、flaファイル内のスクリプトは〜
ということでツールのことはさしていません。この場合ツールはFlash CS3です。
後半はフレーム数以外は簡単に取得する方法はないんじゃないかなー。
>>504 レスありがとうございます。
前半、そういう意味なんですね。
基礎的知識がないせいかピンと来ませんが、そういうものなんだなと理解しました。
後半は、無理なんですか!
MovieClip のフレームやタイムラインでの制御というのは、
Flash CS3のようなGUIツールだけで使える機能と思っていいのでしょうか。
そうすると、MovieClipは重そうなので、どうせフレームなどが使えないなら
Spriteで同じ動きを再現するようにしたほうがよさそうですね。
ちなみに、自分の現在のActionScriptの知識量は
ttp://gihyo.jp/dev/feature/01/flash-sdk これの連載第七回まではやってみたというところです。
ActionScript でぐぐると、GUIツールの話ばかり出てきて困っているところでした。
初歩的すぎる質問への回答、ありがとうございました。
>>498 サブクラスを制作する方法は、やめておこう。
私が認知症になる方が早そうだ。
今日の所は、アクションフレームではカスタムクラス定義できない、とだけ覚えてくれ。
邪道だが、別の方法を伝授する。
1. 以下のファイルをコピーしてくれ。
コピー元:(略)\Adobe Flash CS4\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\TextInput.as
コピー先:貴方のプロジェクトフォルダ\fl\controls
2. 貴方のプロジェクトフォルダのTextInput.asを修正してくれ(コピー元は決して修正しない事)。
(旧) public function TextInput() { super(); }
(新) public function TextInput() { super(); tabEnabled = false; }
3. Flash上でコンポーネントリスト(Ctrl + F7)から「TextInput」をステージにドラッグする。
試しに2、3個持ってきてくれ。
4. これで実行。 Tabが無効になっている事が確認できると思う。
もし、ソースパスがコピー元を通っていたら、デフォルトに戻して切って欲しい。
つまり、swcよりasファイルが優先して使用される事を利用している。
私のCS4では動作した。
as3です。FlashCS3使ってます。 背景色をAS側から、途中で変更することってできるのでしょうか。 もともとはFlash上のプロパティで設定してます。
508 :
Now_loading...774KB :2009/06/11(木) 07:59:08 ID:wEt/cqW1
変数でデータ型を設定したりしますが、 これってクラスのことですよね。 データ型はクラスと同義でしょうか?
>>498 >>506 そんなめんどくせー事しなくてもtabChildrenをfalseにすりゃ済む話なんじゃね?
>>507 背景色はムービ表示する時のタグで指定するから、そのまんまじゃ無理かな
ASで制御したいなら、javascript経由でタグ自体をasから書き換えるか、特定の背景色を設定したShapeを下に敷くかかなあ
Shape使う場合はopaqueBackgroundで色を指定してあげれば、マウスの当たり判定とかにも影響で無いんじゃなかったかな
>>508 同義と言われるとちょっと違うけど、
「この変数に、どのクラスとして扱いたいものへの参照を入れたいのか」
という設定をしている
そーいう意味ではデータ型はクラスの種類を指定しているかな
単刀直入にお聞きします。 linuxで動く、Xを使わないAcitonScript3の実行環境って ありませんか? (コンパイル環境ではない)
ActionScript3自体がFlashのAPIに依存してるから、 FlashPlayer使う以外に選択肢ないんじゃないの。 いまLinuxのFlashPlayerのアップデート状況がどうなってるか 知らないけど
514 :
Now_loading...774KB :2009/06/11(木) 17:44:13 ID:tSr8y8PF
stage.addEventListener( Event.RESIZE, resizeHandler ); public function resizeHandler(event:Event):void { mySprite.y = stage.stageHeight - mySprite.height } Actionacript3.0です。 ブラウザ画面のサイズが変更されても、mySpriteがブラウザ画面の下端に配置されているようにしたいのです。 上の方法で、ブラウザの端をドラッグしてサイズを変更した場合は、mySpriteがブラウザの下端に追従するようになるのですが、 ブラウザの最大化&元に戻すボタンでサイズを変えた場合、mySpriteがサイズ変更前の場所で止まってしまいます。 この、最大化ボタン等を押してサイズを変えた場合も画面の下端に追従させるにはどうすれば良いのでしょうか。
>>514 ちょっと今実際に試せないからすぐに解決方法示せないんだけど、
イベントが発生しないのか、stage.stageHeightが更新されないのかわかる?
イベントが発生しないのならちょっと非効率的だけど定期的にサイズを調べれば
良いだろうし、サイズが更新されないのなら・・・
516 :
Now_loading...774KB :2009/06/11(木) 20:21:49 ID:zsdQF7it
vista&cs3環境でbitmapdataを弄ってるんだけど、
↓
ttp://uproda.2ch-library.com/lib137908.jpg.shtml みたいに画像が重なると透明部分が欠けちゃって困ってます。
var bd1:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight,true,0x00000000);
var canvas:Bitmap=new Bitmap(bd1);
addChild(canvas);
var sprite:Sprite=new Sprite();
sprite.graphics.beginFill(0x33A0E8);
sprite.graphics.drawCircle(0,0,15);
var bd2:BitmapData=new BitmapData(sprite.width,sprite.height,true,0x00000000);
var mat:Matrix=new Matrix();
mat.tx=sprite.width/2;
mat.ty=sprite.height/2;
bd2.draw(sprite,mat);
var rect:Rectangle=new Rectangle(0,0,sprite.width,sprite.height);
var po:Point=new Point(100,100);
bd1.copyPixels(bd2,rect,po);
po.x=110;
po.y=110;
bd1.copyPixels(bd2,rect,po);
どうやったらきれいに画像を重ねることができるんでしょうか??
ActionScriptでインタプリタを作ろうとしてるんですけど、 変数の処理の仕方がわからず手間取ってます。 二分木のようなものってASで作れますか? あと外部テキストファイルの読み込みで、タグの関係で「<」記号が 文字として読み込まれないのですが、解決策ってありませんか? お願いします。
>>518 >二分木のようなものってASで作れますか?
作れる
>タグの関係で「<」記号が文字として読み込まれない
普通はそんな事無い
どうやって読み込んで、どうやって「読み込まれない」と判断してるのか
具体的なコードで示して
XMLならCDATAじゃないの
>>516 bd1.copyPixels(bd2,rect,po,null,null,true);
こうかえ?
522 :
516 :2009/06/12(金) 01:16:52 ID:kNLmGSeW
>521 できたサンクス! でも描画系は引数多くて頭混乱するなぁ。。
523 :
Now_loading...774KB :2009/06/12(金) 19:53:24 ID:iPFo99Lr
516のソースをみて殆ど理解できなかった。 まだまだだなー。
524 :
Now_loading...774KB :2009/06/12(金) 22:29:45 ID:prERj78j
AS3.0とAS2.0の違いって何なんですか? 例えば3.0ではon(press)などが使えないのはなぜですか?
525 :
Now_loading...774KB :2009/06/13(土) 00:09:14 ID:pGRYDlpv
FlashCS3(AS3.0)をWinXPで使用。 オリジナルのSWF-Playerを作ろうとしています。 AS2.0ならメインタイムラインのフレームアクションで this.loadMovie(); と 1行書けば良かったのですが、AS3.0での書き方が分かりません。 一応、下の記述をメインタイムラインのフレームアクションに書いてExeで パブリッシュすればSWFは認識します。 var swfLoader:Loader = new Loader(); swfLoader.load (new URLRequest(stage.toString()));//ここに問題? swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, load_onComp, false, 0, true); function load_onComp (loadEvt:Event):void { swfLoader.contentLoaderInfo.removeEventListener (Event.COMPLETE, load_onComp); } しかしこれだとnew URLRequest()の引数に問題があるらしく(?)、プレビューで Error #2044: ハンドルされていない IOErrorEvent : text=Error #2035: URL が見つかりません。 となります。 つまりPlayerとしての機能は果たしているものの、エラー持ち(問題持ち)の状態です。 アドバイス願います。
>>524 onPressってメソッドがMovieClipなんかのインスタンスにないから。
違いを一言でいうと、Javaのほうが商業的に成功してて開発者もいっぱいいるから、
Javaぽい文法にしたほうが、開発者が増えてAdobeの製品買ってくれるってそういう
ビジネス上の理由が一番じゃない。
528 :
453 :2009/06/13(土) 01:50:53 ID:KG5BMKCd
>>453 =465です。
あれからいろいろと試して、なんとか「同じフォルダにorgファイルを置く」ことで
ライブラリを読ませることに成功しました。
以前試したときに動かなかった記憶があるので、なぜ今になって動作したのかは
さっぱり分かりませんが・・・・
ともあれ、お答えくださった方、ありがとうございました。
>>526 どうも。
引数は「場所を指定しない」という意味で swfLoader.load (new URLRequest(""));
としましたが、まだエラーが出ます。
苦肉の策で、自分自身を参照する swfLoader.load (new URLRequest("Player.swf"));
としたところ、エラーは出ませんし、これをExeにすれば他のSWFの再生も出来ます。
でも何か気持ち悪いです。
どうしたら良いでしょうか?
>>529 load()は外部ファイルを読み込むメソッドだよ。
当然、外部ファイル名を必要とする。
場所を指定したくないのはなぜなんだろう。
ライブラリにあるswfファイルを再生したいのなら、load()は不要だけど。
531 :
Now_loading...774KB :2009/06/13(土) 10:51:35 ID:2PhtayaQ
>>527 なるほど、分かりやすい説明ありがとうございます。
これからflashやActionScript
532 :
Now_loading...774KB :2009/06/13(土) 10:52:38 ID:2PhtayaQ
>>527 なるほど、分かりやすい説明ありがとうございます。
これからflashやActionScriptを勉強しようと思っているのですが、AS3.0から始めたほうがいいでしょうか。
今後はAS3.0が主流になっていくのでしょうか。
>>532 AS2かAS3かなんてたいした問題じゃない。
何をしたいのか、そのためには何が必要なのか、だ。
>>532 単なる1発モノで浮動小数点を多用しないならAS2.0の方が速くできる。
逆に複数の人間に割り振って開発したり、浮動小数点を多用したり、継続的に
改良する見込みがある場合はAS3.0の方をお薦めする。
>>530 最初にも書いていますが、目的はオリジナルのFlashプレーヤー作成であり、
特定の場所の特定のSWFを対象にしてないので(本音では)loadの引数を
無しにしたいくらいです。
※AS2.0では this.loadMovie(); で済みましたので。
>>535 答えになって無くてすんません。
よくわからんのですが、引数が要らない、ということは、
外部ファイルをロードしなくてもいいってことじゃないのかな?
任意のファイルを選ぶなら、当然引数にそのファイルの場所が代入されるんだろうし
引数は要らないがファイルをロードするってケースってどういう場合なのか
興味あります。
>※AS2.0では this.loadMovie(); で済みましたので。 そんなわけねーよ
>>536 そもそも何故オリジナルのFlashPlayerが必要か?という所から答えます。
(舞台はFlash開発環境が無いモバイル用ノートです)
今まではthis.loadMovie();で作ったExeファイルにSWFをドラッグ&ドロップすれば
自動的にSWFのアイコン(Player8なら真ん中に青丸)が表示され、スタンドアロンで
SWFが再生できていました。
ところがPlayer9になってからはCS3のPlayre9にSWFをドラッグ&ドロップしても
SWFのアイコン(中央にfのマーク)にならないため、自作でPlayerを作ろうと
思いました。
要はモバイル用ノートでSWFのアイコン表示をそれ相応のものにしたいということです。
>>537 http://uproda11.2ch-library.com/182195kfO/11182195.fla
そりゃあんたのノートPCの拡張子の関連付けとスタンドアロンプレーヤーの問題じゃん スクリプトは1ミリも関係ねー
>>539 拡張子を認識させるよう設定したのですがダメでした。
あんたの設定の仕方なんて知らねーよ つーかadobeのスタンドアロンプレーヤー勝手にダウンロードして入れてくれよ 付き合いきれんわ
>>538 >今まではthis.loadMovie();で作ったExeファイルにSWFをドラッグ&ドロップすれば
意味が良くわからないんだけど、loadMovie()は何のために書いてるの?
すみません。 キー入力イベントに関する質問です。 お願い致します。 TextField(入力可)を表示している状態で、stageにイベントハンドラを設定しています。 一定条件でTextFieldを非表示にした場合、stageへキー入力イベントが来なくなってしまいます。 マウスクリックでstageをクリックすれば来る様になるのですが不便です。 TextFieldを非表示にした時にキー入力のフォーカスが失われていると思います。 これを解決できないでしょうか? (サンプル作ったので↓に貼ります。)
544 :
Now_loading...774KB :2009/06/13(土) 18:40:01 ID:rWVJydpW
package { import flash.display.*; import flash.text.*; import flash.events.*; [SWF(width=320, height=240, backgroundColor=0xA0A0A0)] public class test extends Sprite { private var iCnt1:int = 0; private var oLabel1:TextField; private var oInputText1:TextField; //コンストラクタ public function test() { iCnt1 = 0; oLabel1 = new TextField(); oLabel1.x = 0; oLabel1.y = 0; oLabel1.width = 256; oLabel1.height = 20; addChild(oLabel1); oInputText1 = new TextField(); oInputText1.x = 0; oInputText1.y = 40; oInputText1.width = 256; oInputText1.height = 20; oInputText1.border = true; oInputText1.selectable = true; oInputText1.maxChars = 20; oInputText1.type = TextFieldType.INPUT; addChild(oInputText1); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); }
545 :
Now_loading...774KB :2009/06/13(土) 18:41:28 ID:rWVJydpW
//キーイベント private function onKeyDown(evt:KeyboardEvent):void { iCnt1++; oLabel1.text = "onKeyDown:" + iCnt1.toString(); if (iCnt1 == 10) { removeChild(oInputText1); //これやると来なくなる } } } } 行数が多くてカキコできなかったので2レスに分けました。 見づらくてすみません。
ぎゃぁ! 行頭のスペースがなくなって物凄く見辛い・・・ 申し訳ないです ↑
>>546 フォーカス持ったまま表示リストから外れちゃったからかな
removeChildするときに、
stage.focus = stage
でもしてフォーカスを表示リストに返しておけばいいんじゃね?
>>547 神様ありがとうございます!
調べたのですがフォーカスを変更する方法がわからなくて困っていました。 解決しました。!
>>543 イベントターゲットが表示リストに無い場合、ターゲットへ直接イベントが渡される。
つまり、removeChildするとstageを経由しなくなる。
visible=falseに置き換えては。
>>549 ありがとうございます。
フォーカス変更がプロパティの代入で出来る事を知らなかったので、その方法でやろうかと思っていました。
上に貼ったテストプログラムでは省略してありますが、あのTextFieldは配列にしていて
状態によって数が変化するので、表示するたびに new deleteを行っていました。
なので、出来ればフォーカスの変更で対応できないかと考えていました。
今後他の部分で同じ問題にぶつかったら、そのような方法も検討してみますね。
ありがとうございました。
>>543 , 547, 549
俺も同じようなことで悩んでいた。
>>538 すまんが、その説明とloadMovie()の関係がまったくわからない…。
実行形式ファイルを書き出したいだけなら、ASいらないのでは?
自前のPlayerなんて作らずに スクリプトを書いて、コンパイルしたファイルをPlayerで再生するようにすれば いいだけじゃね。 ていうか、FlashDevelopにもともとそういう機能ついてるんじゃね。 自分はFDTってのを今使ってるから詳しく知らないけど。Flash IDEなくても Flex SDKあれば何ら問題ないはずだと思うけど。
AS3初心者なんですが、 C++での void CFoo( const int& a ) const{...} のようなconstに相当する機能を実現することは可能でしょうか。
あ,すみません。間違えました。もう一度。 C++での void CFoo1::Foo( const CFoo2& a ) const{...} のようなconstに相当する機能を実現することは可能でしょうか。
>>555 C++の様な関数の定義はできない。
var o1:Object;
var o2:Object;
// o1, o2に何か値を代入
// (略)
foo(o1, o2); // 参照渡しなので、o1とo2の値が変わるかもしれない。
foo(new Object(o1), new Object(o2)); // コピーの参照を渡しているので、o1, o2の内容は保証される
後者の記述が近いか。
定義の段階で保護したければ、
function foo(p1:Object, p2:Object):void {
var l1:Object = new Object(p1);
var l2:Object = new Object(p2);
// 以下、p1, p2を使用しない
// (略)
}
の様に冒頭でコピーか。
C++は理系向け、javaやAS3は文系向けという気がする。
AS3のサンプル見るまで、C++の引数のconstが何してるのかさっぱりだった。 正直、AS3のほうが直感的で分かりやすいと思うのは、俺が文系というか美術系だからか。
文系理系とか関係ないよw バグで苦しんだ経験があるかどうか、チームでプログラムを作ったことがあるかどうかだよ。 そのためのconstだから。
559 :
Now_loading...774KB :2009/06/14(日) 10:12:14 ID:I6mpmChg
fla内でトップレベルのクラスを扱うときは、 import の記述は必要ないと習いました。 でも、トップレベルでないクラス例えば、 MovieClipとか扱うときでも、importを使った覚えないような 気がします。 importを使うときといえば、外部にあるカスタムクラスを 扱うときぐらいです。 「fla内でトップレベルのクラスを扱うときは、 import の記述は必要ない」 というのは本当にただしいのでしょうか?
561 :
Now_loading...774KB :2009/06/14(日) 11:02:10 ID:I6mpmChg
ありがとう。 では、 「fla内でビルトインのクラスを扱うときは、 import の記述は必要ない」 は正しいですか? MovieClipクラスや、Shapeクラスは トップレベルのクラスではないですよね。
>>556 なるほどよくわかりました。
ありがとうございました。
>>561 フレームアクションかどうかにもよる。
フレームアクションの場合、adobe.utils、flash(一部例外がある)パッケージはimport記述を
省略できる。
ありがとう。 そういえば、フレーム以外にもスクリプトを書けましたね。 勉強になりました。
AS2.0 20fps でキーに短い効果音を割り当てたいのですが 2フレーム目に var mc0 = _root.createEmptyMovieClip("sound_mc0", 100); var mc1 = _root.createEmptyMovieClip("sound_mc1", 101); var sound_obj0 = new Sound(mc0); var sound_obj1 = new Sound(mc1); sound_obj0.attachSound("hihat"); sound_obj1.attachSound("crash"); var keyListener:Object = new Object(); keyListener.onKeyDown = function() { if (Key.isDown(90)) { sound_obj0.start(); } if (Key.isDown(88)) { sound_obj1.start(); } }; Key.addListener(keyListener); と書いて3フレーム目で動かすのですが、 キーを連打するとうまく音が再生されません。 秒間20連打してるわけでもないんですが。 キーにイベントリスナーでサウンドを割り当てるときに注意点のようなものはありますか?
AS2.0です。 getTimer関数というのはムービーが再生されてからの時間しかとることができないのでしょうか? ステージ上のボタンを押してからの時間をとりたいのですがどのように記述してよいか分かりません。
>566 btn.addEventListener(MouseEvent.CLICK,hogetimer); var count:int = 0; function hogetimer(evet:MouseEvent):void { count++; if (count % 2 == 1) { var startTime:int = getTimer(); } else { trace(getTimer()-startTime); } }
あ、AS2か。 ごめん。AS2はわからない。。。
>>567 ボタンを押した時にgetTimer()して、現在のgetTimer()からひけばいいのでは?
570 :
Now_loading...774KB :2009/06/15(月) 10:53:00 ID:bWn0sDEO
CS3です。 すいません。デフォルトの外部ASへのパス設定が削除されてしまいました。 急ぎ、どなたか。パスの値をお教えいただけますでしょうか? メニュー→編集→環境設定→(カテゴリ)ActionScript→(言語)ActionScript3.0設定 にデフォルトで記述されているクラスパスです。恐らく「$」から始まります。 どうぞ宜しくお願いします。
>>565 「うまく音が再生されません」とは、具体的に、どうなるべきところが、どうなってしまうの?
その通りに作って普通に連続で音がするように思うのだが。
572 :
570 :2009/06/15(月) 11:13:59 ID:bWn0sDEO
お騒がせしてごめんなさい。自己解決しました。
NetStreamでビデオをループさせたいと思って、 "NetStream.Play.Stop"をリスナーで監視しておいて、 再生が止まったタイミングで、 netStream.seek(0) で戻すんですが、 一瞬コンマ1秒ぐらい動画と動画の間に切れ目ができませんか? これをどうやって回避したらいいのか悩んでいるのですがわかりません。。。 FlvPlaybackは使わずに、netStreamでやった場合の、 ループ時の途切れをなくす方法で、無理やりでもいいので、 綺麗なループを構成する方法ってないのでしょうか。
574 :
Now_loading...774KB :2009/06/16(火) 03:21:39 ID:tHdNP/W9
AS3.0です。 クラスの生成について、通常は以下のように記述しますが、 var mc:MovieClip = new MovieClip(); ↓ var mc:MovieClip = new MovieClip; のように()の無い、記述をみるときあります。 でも問題なく生成されているようです。 この()の無い記述方法って問題でしょうか? どうぞ宜しくお願いします。
このフレームが表示されたら○○シーンの○○フレームに移動ってのはどう書けばいいですか? これだと情報すくないですか?
AS3.0です。 ”TextAreaに書き込みした後にEnterキーで送信” という動作を実現させたいんですが、 Enterキーを押したらTextAreaに改行が書かれてしまい困ってます。 EnterキーだけTextAreaに書き込ませないようにすることって可能でしょうか? (備考 ・ TextAreaに書き込みをしたいのでEnterキー以外のキーイベントはTextAreaに届けたい。 ・ TextAreaで改行を入れたくても出来なくなりますが、これは構いません。 ・ TextAreaをMovieClipの子要素として設置し、EnterキーのキーイベントをこのMovieClipで受信し、 EnterキーのキーイベントがTextAreaには通知されないように出来たら理想的です。 ( ただしEnterキー以外のキーイベントはTextAreaに通知する ) なお、”TextAreaに改行が書き込まれた直後にすぐ改行を消す” というのはみっともないのでNGでお願いします。^^;
577 :
Now_loading...774KB :2009/06/17(水) 04:07:04 ID:g883IzBj
>>574 var mc:MovieClip = new MovieClip();
が正しい書き方。
下はだめ。下の書き方している方いるの?
もし本でそういう書き方しているのがあったら
投げ捨てろ。
>>575 バージョンを書け。
>>576 みっともないのでNG
アンタのコードの美しさを誰かが審査するの?
(コンクール用?)
一応ヒント:multiline
579 :
574 :2009/06/17(水) 04:27:02 ID:PRzCvq1B
ありがとう。本を投げ捨てますw。
>>577 バージョンというと AS1.0&2.0ですかね?
581 :
さよなら茸俊輔 :2009/06/17(水) 11:17:39 ID:PRzCvq1B
>576 これでどうかな? my_txt.addEventListener(Event.CHANGE,workline); function workline(evt:Event):void{ my_txt.text = my_txt.text.split("\n").join("").split("\r").join(""); };
582 :
576 :2009/06/17(水) 14:24:34 ID:f7nO019S
>>578 コードの美しさではなく画面のちらつきが出るのでやりたくはないんです。
今作っているFlashは自分のみが使うFlashなのでコンクール用ではありません。
今回のようにフォームに書いたものをEnterで送信したい場合というのは今後も
使いそうなので今のうちによりよい書き方を知っておきたいと思い、質問させて頂きました。
>>581 ありがとうございます。 でもその方法は
>>576 に書いた通り、
”改行が書かれた後に改行を消す” という処理になるので使いたくないんです。
(改行が書かれた後に消す処理なら自分で書けます)
583 :
576 :2009/06/17(水) 14:29:14 ID:f7nO019S
>>578 >一応ヒント:multiline
これはシングルラインモードにすればいいという提案だと思うのですが、
テキストエリアに改行を含む文字列をコピペで貼り付ける場合に困るので
multilineモードは変えられません。
>>583 3.0ならtextInputでキャンセルできんじゃなかったかな?
改行コードが\nとしてこんな。コピペの場合は考えてねー
textArea.textField.addEventListener(TextEvent.TEXT_INPUT,func)
function func(e:TextEvent){
if(e.text=="\n")e.preventDefault();
}
585 :
さよなら茸俊輔 :2009/06/17(水) 15:02:46 ID:PRzCvq1B
586 :
576 :2009/06/17(水) 18:42:23 ID:f7nO019S
>>584 おお、まさにこれです! 今後ずっと使います、どうもありがとうございました!
587 :
Now_loading...774KB :2009/06/17(水) 20:52:36 ID:ouB6d/Ft
下のスクリプトで、r=1、r=2のif式をまとめたいのですが、 if (a == 100){ if (b == 20 && c < 6 || b == 20 && c > 5 || b == 30 && c < 12 ){ r = 1; }else if (b == 30 && c > 11 || b == 40 && c < 2){ r = 2; とすると、エラーになってしまいます。昔、数学を習ったときに、()の上位に{}を使うとかあったのですが、それと同じように、別のカッコを使用する必要があるのでしょうか? どなたか、助けてください。 var a:Number = 100; // 100か200か300か400の整数値をとる var b:Number = 20; // 20か30か40の整数値をとる var c:Number = 1; // 1から20の整数値をとる var r:Number = 0; // 整数値 if (a == 100){ if (b == 20 && c < 6 ){ r = 1; }else if (b == 20 && c > 5){ r = 1; }else if (b == 30 && c < 12 ){ r = 1; }else if (b == 30 && c > 11 ){ r = 2; }else if (b == 40 && c < 2 ){ r = 2; } } else if(a == 200){ : //以下続く }
>>587 aとbはまとめられないかな
switch (a + b)
{
case 120 :
if (c != 6)
r = 1;
break;
case 130 :
(c < 12) ? r = 1 : r = 2;
break;
…こんな感じでいけないかな
589 :
Now_loading...774KB :2009/06/18(木) 06:32:58 ID:DjvGDFqI
ECMAscript5.0が制定されたようですが。 将来ActionScriptはECMAscript5.0に準拠するのでしょうか? 僕個人は、もうJavaにしちゃえと思っています。
590 :
587 :2009/06/18(木) 06:43:12 ID:TUD0gFWe
>>588 さま
ありがとうございます。
switchを使うわけですね、想像できませんでした。。。
ちょっと、チャレンジしてみます!
591 :
Now_loading...774KB :2009/06/19(金) 00:53:53 ID:M0BGgR/B
WinXP-ProのFlashCS3(AS2.0)です。 キーコードの取得で悩んでいます。 myListener.onKeyDown = function () {}内で pressedKey = Key.getCode(); trace ("Data= " + Key.getCode()) と書いたところキーを押しても何も反応しませんでした。しかし、Stage上の ダイナミックテキストをクリックすると(例えばFキーの場合)、Data= 70 と出力されます。 つまり、一旦ダイナミックテキストをクリックすれば良いですが、毎回クリック するのは面倒です。これを回避する方法はありますか? なお、「ActionScript 2.0 キーコード ステージ クリック」でググりましたが適当な 解決策が見つかりませんでした。
フォーカスを移動させればいいんじゃね。
>>592 さんきゅうです。
ステージのどこか適当なところをクリックすればOKになりました(ただし、プレビューでは不可)。
594 :
Now_loading...774KB :2009/06/19(金) 03:27:23 ID:BVxvXNwZ
まだまだ2.0は健在ですね。。
>>594 要は目的と仕様次第。
単発で継続性が無い案件や「手っ取り早く作ればいいや」といったものにはAS2.0が向いている。
596 :
Now_loading...774KB :2009/06/19(金) 12:13:07 ID:BVxvXNwZ
なるほど、さくっと作るには2.0の方が早いんですね。
597 :
Now_loading...774KB :2009/06/19(金) 12:19:47 ID:BVxvXNwZ
イベントについて伺います。 [added] や [click] [enterFrame] など、「イベント」と言われるものがありますが、 これらは文法的になんなのでしょうか? Eventクラスのプロパティではないようです。 メソッドでもプロパティでも、ましてはクラスでもないように思います。 単なる概念でしょうか?
>>593 プレビューでキー関係の確認したい時は、キーボードショートカットを無効にするんじゃ
>>597 単なる概念というか、名前。イベント名
「クリックしたときに発生するイベント」の事は「clickイベント」と呼ぶようにしているだけ
イベント名無いと、「あのイベント」じゃ通じないから名前つけてる。文法がうんぬん以前の単純な話
あと、3.0だったら、大抵はイベントオブジェクトのtypeプロパティにこの名前と同じ文字列が格納されてんじゃないかな
600 :
Now_loading...774KB :2009/06/19(金) 14:27:27 ID:1MLr1H8Q
おせわになります。 tweenerをつかって スケール0、透明度0のとこから、 それぞれ100にして、徐々に出現し、拡大するようにしたいんですが、 下記のように書いたんですが、拡大がムービクリップの中心からじゃなく 左上から拡大されます。 これは、なにかパラメータが必要なんでしょうか? よろしくお願いします。 Tweener.addTween(logo,{_alpha:100, _xscale:100, _yscale:100, time:2,base:logo});
601 :
Now_loading...774KB :2009/06/19(金) 14:33:23 ID:BVxvXNwZ
599さん 疑問が解けましたありがとうございます。
602 :
600 :2009/06/19(金) 16:21:11 ID:1MLr1H8Q
ちなみAS2になります
603 :
Now_loading...774KB :2009/06/19(金) 16:57:44 ID:BVxvXNwZ
tweenerは良く知らないけど、単にMovieClipの基準値が左上になっている だけだとか?? ライブラリの対象のムービークリップを開いて 「+」の位置に ムービークリップの中心を合わせる。とどう?
604 :
Now_loading...774KB :2009/06/19(金) 21:54:54 ID:nxOF15/L
CS3のAS2.0でWinXPです。 配列の要素の出現頻度はどのようにしたら調べられますか? 試しに arr = [a,t,a,t,t,t,d,a]; として、これを arr.sort () で並び変えると [a,a,a,d,t,t,t,t]となったのですが行き詰まりました。 お助け願います。
605 :
604 :2009/06/19(金) 21:57:50 ID:nxOF15/L
理想とする出力結果は、 a:3個 d:1個 t:4個 な感じの一覧です。
>>605 数えりゃいいじゃんw
forで回して、連想配列に要素ごとのカウンタ持てば良いかと。
{a: 3, d: 1, t:4}みたいになるように。
607 :
604 :2009/06/19(金) 23:11:29 ID:nxOF15/L
>>606 すいません。ググりましたがAS2.0でのハッシュの例が見つかりません。
手元の本でもハッシュの例は皆無です。
どういう手順になりますか?
>>604 なんかそれどっかで見たことある。
毎年出されてるどこぞの学校の課題かなにかかw
var arr:Array = new Array("a","t","a","t","t","t","d","a");
var rel:Array = new Array();
for (val in arr) {
if ( isNaN(rel[arr[val]]) ) rel[arr[val]] = 0;
rel[arr[val]] += 1;
}
for (val in rel) trace(val + ":" + rel[val] + "個");
stop();
表示される順番があれだけど、最初にarrをソートしとけばいいと思われ。
609 :
604 :2009/06/20(土) 00:02:33 ID:bW5JhHYP
>>608 有難うございます。
(前後しますが)文法はこれから勉強します。
610 :
Now_loading...774KB :2009/06/20(土) 00:14:08 ID:JqPLISCS
配列って奥が深いね。
>>607 ハッシュをObjectと読み替えて調べなおしてくれ
612 :
Now_loading...774KB :2009/06/20(土) 03:24:35 ID:obbefLOK
例えばフレーム2のボタンAからフレーム4に飛ばす、フレーム2のボタンBからフレーム5に飛ばすのはどうすればいいですか?
>>612 だからバージョンを書けって
てか基本的すぎる質問はこのスレじゃスルーされるぞw
超基本スレ行けよ
614 :
Now_loading...774KB :2009/06/20(土) 03:54:48 ID:obbefLOK
3.0っす ボタンをレイヤー化しないでやりたいんす 言ってる意味分からないかもしれませんが、俺にもgotoAndPlayとかaddEventとかどっちがなんなのって感じですわ
615 :
Now_loading...774KB :2009/06/20(土) 06:46:34 ID:JqPLISCS
>>608 みたいなロジックに強くなりたい。
市販のAS本とかは、クラスの説明を兼ねたサンプル集が殆ど。。
何か良い勉強法とかあるだろうか。。
「どれかと一致した場合」という条件式はありませんか 例えば以下のような場合です var hoge:String; //hogeにはアルファベット1文字が入る if (hoge == "A" || hoge == "C" || hoge == "E" || hoge == "G") { 処理 } 上の例は4つですが、もっと沢山ある場合もあります。
>>616 3.0ならRegExpで正規表現でいけるかな
それ以外は、その例だったらindexOfでチェックしてもいけんじゃないかな
if(hoge.indexOf("ACEG")>-1){
//処理
}
619 :
Now_loading...774KB :2009/06/20(土) 15:12:26 ID:JqPLISCS
文法について質問です。 var shape:Shape = new Shape(); shape.graphics.beginFill(0x0000FF); 上の graphics なのですがこれは shapeオブジェクトのプロパティでしょうか? それともshapeの子になるgraphicsクラスのオブジェクトでしょうか?
>>619 >shapeオブジェクトのプロパティでしょうか?
そう
>それともshapeの子になるgraphicsクラスのオブジェクト
これもそう
丁寧に書くと
var shape:Shape = new Shape();
var g:Graphics = shape.graphics;
g.beginFill(0x0000FF);
Shapeのgraphicsには、Graphics型のインスタンスが格納されてる
621 :
Now_loading...774KB :2009/06/20(土) 17:18:52 ID:JqPLISCS
>>620 さん
理解を深めることできました。ありがとうございました!
622 :
Now_loading...774KB :2009/06/20(土) 17:45:10 ID:3PlVX2Bf
AS3で外部flaと繋げるにはどうすれば?
>>622 一度パブリッシュしてswfファイルにする必要がある。
swfファイルで別のswfファイルをロードして実行したり、swfファイル同士でプロセス間通信もできる。
624 :
Now_loading...774KB :2009/06/20(土) 21:07:10 ID:3PlVX2Bf
>>623 そして、
addEventListener(MouseEvent.CLICK, jampPage1);
とかですか?
new BitmapDataで800*600程度のビットマップを20個ほど作った場合 CPU負荷自体はたいして変わらないでしょうか? ビットマップの大量作成によって起こる弊害などがありましたら教えていただきたいです宜しくお願いします。
>>625 メモリを喰う。CPU負荷はその画像をどう使うかしだい。
>>626 回答ありがとうございます
使わなければ負荷はありませんよね?メモリはかなり喰いますかね・・?
>>627 パフォーマンスモニタみながら自分で試してみようよ。
どのくらいの負荷が許せるのか、どのくらいのメモリ消費を許容できるのかは
あなたにしかわからないのだから。
>>628 そうですね頼ってしまってすみません
一応プログラムを組んでで確かめてみました
Bitmap800*600を20枚で大体30MBくらいの使用でした
このくらいの使用だと今時のPCだったら大丈夫ですかね
変数がプラスだったら1 ゼロだったらゼロ マイナスだったら-1を手に入れたいんだけど そういう関数って標準であったりしますか?
関数にしなくても一行にまとまる程度だけど
よく使う処理ならその一行を打ちこむのがめんどくさい。
635 :
Now_loading...774KB :2009/06/21(日) 15:35:00 ID:jXtbfvJK
よくは使わないなw。
copypixelsってAS2とAS3で描画の速度差はありますか?
637 :
Now_loading...774KB :2009/06/21(日) 20:41:56 ID:jXtbfvJK
カスタムクラスの静的プロパティの役割がよくわからんのだが、 改変されないプロパティという考えでOK?
全然駄目 プロパティはインスタンスに属するパラメータ 静的プロパティはそのクラス全体で共有したい定数や列挙の変わり 用途がわからないレベルなら無理して使う必要無いよ
639 :
Now_loading...774KB :2009/06/22(月) 01:07:44 ID:+k5dX5up
なるほど。ありがとうございます。一応勉強したいので。 でも、カスタムの静的プロパティは、小規模な制作で使われることあまり なさそうですね。
>でも、カスタムの静的プロパティは、小規模な制作で使われることあまり >なさそうですね。 そんなことないですよ。短いプログラムでも有効に使うことができるなら便利です。
あれ、静的プロパティは改変できるんじゃないっけ、 改変できないのは定数にした場合だけじゃね。
Bitmapがでかいサイズで20枚も作成しなきゃいけないってどんな効果のため? メインになる画像が切り替わるような効果なら、2枚Bitmapを用意して中味のデータだけ 入れ替えるとかのほうがいい気がするけど。
>>631 ,643
単純にifで比較した方がらくかなぁと思った。
abs使って正規化すりゃいいかと思ったけど0除算を切り分けないとダメだし、
Nuber型で0との判定って面倒だし。
>>631 AS3はBoolean型をint型にキャストできないのが不便だよな。
answer = (value > 0) - (value < 0);
多くのプログラム言語は、これでいけるんだけどね。
符号が反対だったり、キャストを明示的に記述する必要があったりするけれど。
普通にキャストできるんじゃね?
answer = Number(value > 0) - Number(value < 0); こうか、なるほど。
649 :
646 :2009/06/22(月) 19:13:40 ID:daqf221F
answer = int(value > 0) - int(value < 0); ああ、できたのか。 as intでキャストすると、 answer = ((value > 0) as int) - ((value < 0) as int); これは常に0になるので、ダメかと思った。
AS2/FlashCS3 です。 よろしくお願いします。 ボタンをいくつか置いています。 タブで送っていくと、それらのボタンに黄色い枠が付き、機能してしまうので、 その動作を無効としたいと考えています。 _focusrect = false; を記入し、黄色い枠と機能は無効にできたのですが、 ボタンインスタンスを使っているためか、 オーバー時の表示は有効のままです。 (タブで送ると、順次ボタンインスタンスのオーバーのイメージが表示されます) タブで送っても、マウスオーバー時の表示をしないようにはできますか?
651 :
Now_loading...774KB :2009/06/23(火) 00:19:40 ID:K75HSeO8
>>650 Rootでthis.tabChildren=false;は?
653 :
Now_loading...774KB :2009/06/23(火) 10:55:21 ID:JTKzWMOV
型変換について伺います。 instance.addEventListener(MouseEvent.CLICK, focusMe); function focusMe(event:MouseEvent) { stage.focus = InteractiveObject(event.target) } InteractiveObject(event.target) event.target as InteractiveObject; 上のソースで、InteractiveObject(event.target) の意味が良くわからず、InteractiveObject()というメソッドはないし、、。いろいろ調べたらキャストらしいことがわかりました。 InteractiveObject(event.target)の代わりに event.target as InteractiveObject におき変えても同じ結果が返ってきました。 そこでで質問ですが。クラス名(別のクラスのオブジェクト)でキャストになるのでしょうか?
>>651 ローカルからネットにアクセスしようとしてるから
サーバに上がってれば警告は出ない
656 :
650 :2009/06/23(火) 12:38:04 ID:qH6japS+
>>652 ありがとうございます!!
上手くいきました。
>>655 レスありがとう。
しかし、本に載ってる方も自作と同じくローカルで動作させています。
また自作の方も、時々正常にYahooにジャンプします(再現性が無い)。
ローカルでの挙動の違いは何由来なのでしょうか?
658 :
Now_loading...774KB :2009/06/23(火) 15:03:25 ID:pttUBzIT
初心者ですが、よろしくおねがいします。 いまローディングを作っています。 下記のように参考書を見ながら、 actionscriptを組んでいるんですが、 通常、一回データが読み込まれれば、2回目はローディングの必要がなく すぐコンテンツを閲覧できるようになるとおもうのですが、 なんどアクセスしても、ローディング画面になってしまいます。 何度も見直したのですが、どこが間違っているのか迷宮入りです。 お知恵をおかしいただけないでしょうか? よろしくお願い致します。 1frame ----- stop(); init = function () { c = 0; gotoAndPlay(2) }; init();
659 :
Now_loading...774KB :2009/06/23(火) 15:04:33 ID:pttUBzIT
続き。 2frame ----- this.stop(); loading = function () {; var _loc6 = _parent.getBytesTotal(); var _loc4 = _parent.getBytesLoaded(); c = c+1; var _loc2 = Math.min(Math.ceil(_loc4/_loc6*100), c); var _loc3 = Math.ceil(_loc2); title.txt = _loc3; if (c == 100) { gotoAndPlay(3) } else if(c<100){ this.onEnterFrame = loading; } }; this.onEnterFrame = loading;
>>657 まったく同じ状況で比べてるのかな?
たとえば、片方はブラウザ、片方はプレビューとかってことはない?
HTMLまで同じ?
>>660 はい。全く同じです。
ブラウザ(FireFox)でもプレビューでも同じ表示になります。
WinXP+AS2.0+CS3 です。 キーの認識(キーコード)で質問です。 myListener = new Object (); myListener.onKeyDown = function () { pressedKeyT = String.fromCharCode (Key.getCode ()); Key.addListener (myListener); 上の記述で「-」(マイナス)キーを押すと、最初pressedKeyTはtrace()で マイナスが出ます。ところが、-A-という感じでもう一度マイナスを押すと 1/2(1文字で1/2。特殊文字?)が表示されます。 このせいでキー入力判定が出来ません。何故1/2が出るのでしょうか?
663 :
Now_loading...774KB :2009/06/23(火) 20:30:52 ID:pttUBzIT
AS3で書いていて、下記のエラーがでます。 なにが原因なのでしょうか? flash.display.MovieClip をサブクラスとする必要があります。
664 :
663 :2009/06/24(水) 00:39:27 ID:4lO6wOlM
ムービクリップの設定は、 クラスが、a 基本クラスが、flash.display.MovieClip に設定していて、 a.asは、 package { import flash.display.* dynamic public class a extends MovieClip { public function a() { return; }// end function } } です。 よろしくお願い致します。
665 :
Now_loading...774KB :2009/06/24(水) 03:15:34 ID:fk/kCGIz
質問です。 ゲームの音楽と効果音の再生で行き詰まりました。 音楽(Music.wav)を再生中に効果音(Shot.wav)をならそうとすると、効果音が1秒くらい遅れて再生されてしまいます。 ググりましたが解決方法が見つからないので誰か助けて下さい。 以下具体的なことです。 音楽ファイルはFlashで埋め込んでいます。設定で圧縮などは一切してません。 //音楽 var music1:Sound=new Music() music1.play(0) //効果音 var shot1:Sound=new Shot1() stage.addEventListener(MouseEvent.CLICK, clicked)//クリックしたら効果音ならす function clicked(e){ shot1.play(0);//これが1秒くらいおくれる } ただし、music1.play(0)をコメントアウトして効果音だけにすれば、遅れは気になりません。 また、それぞれをMP3にしたり、ビットレートを変更してもだめでした。 環境はFlashCS4です。 よろしくお願いします。
666 :
662 :2009/06/24(水) 03:18:25 ID:8kVhzuVf
自己解決しました。 1/2が出るのは仕方ないとして、これを逆に利用して後の処理をしました。
667 :
Now_loading...774KB :2009/06/24(水) 03:38:54 ID:6oa1KtGg
CS3のAS2.0でWinXPです。 ブラウザウインドウが閉じないので困っています。 ボタンアクションで下を書いたのですが何も変化がありません。 on (release) { getURL ("javascript:window.close();"); } ほんで、代わりにプロジェクタを閉じようと下を書いたのですが これも駄目でした。 fscommand("quit", true); ブラウザはIE6.0とFireFox3.10ですが両方駄目です。 アドバイス願います。
すみません。 Spriteから派生したクラスの上にビットマップをaddChild()で表示しています。 SWFを直接実行している時など、SWF内で指定した解像度の縦横比と異なるサイズにすると backgroundColorで指定した色の縁が出来ます。(まぁ、これはいいのですが) ビットマップの座標を動かして画面の外まではみ出した場合に、その縁の部分までは表示されてしまします。 はみ出した部分を表示させたくない場合はmaskを設定するしかないのでしょうか? 単純にはみ出した部分は非描画領域という設定は出来ないでしょうか?
書き忘れ・・・ ↑の質問は stage.scaleMode が SHOW_ALL の場合です。
670 :
Now_loading...774KB :2009/06/24(水) 11:25:07 ID:/Gey7z6u
6
671 :
Now_loading...774KB :2009/06/24(水) 11:48:06 ID:/Gey7z6u
>>665 →
>>352 >>664 そのカスタムクラスが原因とは思えない。fla側のコードが問題ありそう。
ちなみに
dynamic public class a extends MovieClip
↓
public dynamic class a extends MovieClip
>>668 非描画領域という設定、そんなもの無いと思う。あれば俺も知りたい。
俺なら、removeChild()する。
>>671 >非描画領域という設定、そんなもの無いと思う。あれば俺も知りたい。
やっぱりmask使うしかないですか・・・
古いPCで動かしてみたところちょっと重い様なので単純な矩形のクリッピングが出来ればと思いました。
>俺なら、removeChild()する。
画面(デフォルトのサイズ)から半分だけはみ出している状態とか、画面外から中にゆっくり入ってくるような
アニメーションをさせているので全体を非表示にするという訳ではないのです。 説明不足ですみません。
673 :
Now_loading...774KB :2009/06/24(水) 19:11:44 ID:v65kgGKe
actionscriptで昼の風景画像を夜っぽくしたいのですがどうしたらよいでしょうか?
674 :
Now_loading...774KB :2009/06/24(水) 19:37:31 ID:/Gey7z6u
>>673 画像の上に黒い半透明なオブジェクトかぶせて暗くするとかじゃダメなの?
以前、たしかPhotoshopスレで同じような質問があったが
レタッチソフトであっても昼を夜にするのは難しいという流れだった。
ASでは
>>674 だろう。
677 :
Now_loading...774KB :2009/06/24(水) 21:11:27 ID:UsBQNyxt
********.addEventListener(MouseEvent.CLICK, page1); function page1(event:MouseEvent):void { var ul1:Loader = new Loader(); var theURL1:URLRequest = new URLRequest("********.swf"); ul1.load(theURL1); addChild(ul1); } これすれば、外部swfが表示されるげど、今のボタンも表示されるんですよね。。。 解決策ないですか?
678 :
Now_loading...774KB :2009/06/25(木) 01:15:54 ID:afVqQcyJ
CS3(AS2.0),WinXP-Proです。 自分が押したテンキーの数字キーを表示したいのですがうまくいきません。 num0 = String.fromCharCode (Key.getCode ()); trace(num0); では、例えば5を押すとeが出力されます。 入力した数字をそのまま表示するにはどうしたら良いでしょうか?
679 :
Now_loading...774KB :2009/06/25(木) 06:46:11 ID:xzAniQ/4
CS4(AS3) ASはこれから本格的に学ぶ予定の者です。 今イライラ棒のようなゲームを作っていて クリアまでの時間を競うゲームにしたいのですが、ちょい質問。 ゲームをクリアすると送信フォームを表示し、エントリーネームなどを記入してもらい getTimerで取得したクリアまでの時間を送信するというフォームにしたいのですが ASだけで作ることは可能ですか? 他に学ばないといけない知識ある?
>>ゲームをクリアすると送信フォームを表示し、エントリーネームなどを記入してもらい getTimerで取得したクリアまでの時間を送信するというフォームにしたいのですが ASだけで作れるよ。 しかし、送信した後のデータをサーバーのランキングに登録するとかするんならCGIやPHPなどの サーバー側で動く言語を知らないとだめだけどね。
681 :
Now_loading...774KB :2009/06/25(木) 07:51:14 ID:xzAniQ/4
>>680 なるほど、ありがとう!
ASでそこまでできたら、PHPも学ぼうと思います。
一週間でできるかな?早く作りたい!
色々作るのは楽しいですね(。・_・。)ノ
682 :
Now_loading...774KB :2009/06/25(木) 07:54:56 ID:xzAniQ/4
あ、あと気になる点が… getTimerで取得した時間を送信すると書きましたが この時間を書き換えられたりしてしまう恐れはないですか? (クリアするまでの不正は別として)
>>682 チェックサムみたいなのも併せてサーバ側に送るといい。
getTimer値に種々の計算式で算出した値も送り、サーバ側で正規の記録かチェックするなど。
どういう利用形態なのか分からないけれど、不正を心配する様な代物なのだろうか。
そこまでユーザ数が多くなる事を想定しているなら、記録の同時書き込みを心配した方がいい。
複数のユーザから記録を同時に送信されると、ランキングデータが壊れる可能性がある。
排他を行う必要があるね。
>>この時間を書き換えられたりしてしまう恐れはないですか? それは送信中のデータを第三者が改ざんするっていうこと? 多分不可能ではないと思う。
>>682 とっとと作るといいよ
今のレベルならこんなところで聞いているより
本なり知識を詰め込んだ方が100倍マシ
まずは1ヶ月、2ちゃん止めることからどうぞ
>>677 >外部swfが表示されるげど、今のボタンも表示されるんですよね。。。
そのコードだと、ボタンの上にswfが表示されるはずで、それは意図どおりでないということでしょうか?
もし、ボタンを読み込まれたswfの上に乗せる場合は、
ボタンをステージに直接設置するのでなく、ライブラリのシンボルからコードを配置します。
@ライブラリにあるボタンのシンボルを右クリックしてリンケージをクリック。
AActionScriptへの書き出しのラジオボタンをチェックして、クラス名を記入します。ここでは、[Mybutton]と記述。
Bソースを以下に修正してください。
::::::::::::::
var btn:Mybutton = new Mybutton();
addChild(btn);
btn.x=100//ボタンの位置(任意の位置に変更してください)
btn.y=50//ボタンの位置(任意の位置に変更してください)
btn.addEventListener(MouseEvent.CLICK, page1);
function page1(event:MouseEvent):void {
var ul1:Loader = new Loader();
var theURL1:URLRequest = new URLRequest("*******.swf");
ul1.load(theURL1);
addChildAt(ul1,0);
}
::::::::::::::
上記の「addChildAt(ul1,0)」の2番目の引数の値の設定を変えることで
swfのレイヤー位置を変えることができます。
CS4/as3です。 as2時代にはステージ上に適当に配置したmcを非表示にする場合、 for ( var prop in this ){ this[prop]._visible = false; } としていましたがas3になってから出来なくなりました。 for ( var prop:String="" in this ){ this[prop].visible = false; } 何が間違っているのでしょうか?
688 :
Now_loading...774KB :2009/06/25(木) 16:34:21 ID:MuQICo0T
AS2で音声プレイヤーを作っているのですが、 拡張子".wax"のファイルを読み込んで再生できますか?
外部音源をswfに読み込んで再生できるのはmp3のみ。だったはず。
ドキュメントクラスという用語ありますけど。 FLASHでは、メインのタイムラインをカスタムクラスに置き換えるような仕組みのことをさしています。 でも、ドキュメントクラスって一般的にありそうな用語ですよね。 一般的にはどのような意味があるのでしょうか? (検索かけても当てはまるものが見つからなかったので。。)
691 :
Now_loading...774KB :2009/06/25(木) 17:58:14 ID:4WrVVrLj
>>686 >
>>677 >>外部swfが表示されるげど、今のボタンも表示されるんですよね。。。
>そのコードだと、ボタンの上にswfが表示されるはずで、それは意図どおりでないということでしょうか?
アドバイスありがとうございます
そうですね。新しいswfに行きたいのです!
>>678 多分thisじゃなくてMovieClip(this)にすればいけるかと思ったがうまくいかない。
代替えの案として
for (var i:uint=0;i<MovieClip(this).numChildren;i++){
MovieClip(this).getChildAt(i).visible=false;
}
で同じ処理はできる。
もっとスマートな書き方があるなら私も知りたいです。
>>648 これいい勉強になるなあ。2.0はもう忘れてしまったのだけど。
692さんのというとおり、thisの意味が3.0と違うような気がした。
元のコードに近づけるには、thisの代わりに配列を定義して
for eachで処理させてみる必要ありそう。
他にいい案があれば誰か教えてください。
:::::::
var arr:Array = new Array()
for(var i:int =0 ; i<this.numChildren; i++){
arr.push(getChildAt(i))
}
for each (var prop in arr){
prop.visible = false;
}
:::::::
これを改良すると、以下になる。
692さんと全く同じコードですね。
:::::::
for(var i:int =0 ; i<this.numChildren; i++){
this.getChildAt(i).visible =false
}
:::::::
あ、間違えた。
↑は648でなくて
>>678 さんあてね。
>>692 おー、なるほど!
DisplayObjectにaddChildしてるから
MovieClipの中を見渡しても無いわけですね・・・。
助かりましたm(_ _)m
2.0でも3.0でもthisは基本的に変わらないと思うけど 2.0は最初から_rootが存在してるからthis=ムービークリップだと思いがちなのかね
僕の勘違いかも知れないけど、2.0のthisには配列が含まれて いるかも知れない。 でないと下の構文が成立しないと思った。 for ( var prop in this ){ } でも、本当に勘違いかも知れないので(汗)詳しい人説明求む。
2.0だとオブジェクトの子にあたるオブジェクトに配列アクセス演算子でアクセスできるよ
ありがとう納得しました。僕の勘違いでしたね。 2.0から3.0へのソース移行は、配列演算子にもちょっと注意しないといけないですね。 勉強になりました。
switch caseの条件式なんですけど、勉強してたら下のコードをみつけた。 switch (event.keyCode) { case Keyboard.RIGHT : case Keyboard.LEFT : var flag:Boolean = (event.type == KeyboardEvent.KEY_DOWN); myShip.setKeyFlag(event.keyCode,flag); break; } case Keyboard.RIGHT : に対応する処理がないのですが、switchの条件式を使う意味が あるのでしょうか? switchの意味がよくわかってないのかも知れませんが、 お分かりのかたお教えください。
矢印の右か左を押したときにbreakまでの処理を実行させたいんじゃねーのかな? if使ってorで書いた方がわかりやすそうな感じだけど
書き出したPlayerのバージョンが異なるswfを読み込んでも、 特に連携する動作が無い場合は、問題は無いのでしょうか? 例えば、 バージョン8 AS2のswfに、バージョン9 AS3のswfをロード バージョン9 AS2のswfに、バージョン9 AS3のswfをロード など。
つーかそもそも下位バージョンから上位バージョンは読み込めねーんじゃねーかな
704 :
702 :2009/06/26(金) 19:32:33 ID:tcaZOOb9
なるほど、確かにその可能性がありますね。 ちょっと確認したところ、 外枠がver7 AS2のものだったようで、コード的にはver9 AS2では書き出せるようでした。 少し自分で調べてみます。
705 :
700 :2009/06/26(金) 21:08:14 ID:bHKgsKCT
なるほど。勉強になります。ありがとうございました。
ていうか、そのためのbreakだし。
すみません。SpriteにCanvasをaddChild()したのですが何も表示されません。 同じCanvasを違うCanvasにaddChild()すると表示されます。 もしかしてSpriteにCanvasはaddChild()してはいけないのでしょうか?
Canvasって何w そのCanvasってのをaddChildしたSprite自体が表示リストに乗っかってねーんじゃねーの? だったらSpriteをaddChildすりゃ済むんじゃねーのかな
すみません。CanvasにはListとかがaddChildされてます。 SpriteにもsimpleButton等addChildして表示されています。 このSpriteにCanvasをaddChildしたら何も表示されません。
>>709 その前に、ASのバージョンを教えてね。
>>710 addChildとかSpriteって言ってるんだから3じゃねーの?
2にはaddChildとかSpriteないのか!ショック。 それにしても、Canvasには何が入ってんだろう? しかもクラス表記だし。。
AS使ってデスクトップ画面をキャプチャすることってできるんでしょうか?? Flashで簡易的なデスクトップ共有ができないかなーって、、、できないよね。
>>713 Flash単体では無理だな。
デスクトップをカメラ入力に送るソフト使えば取り込めるけど。
そうですか。どんだけ探してもでてこないわけですね。 でも、よく「専用ソフト不要でデスクトップ共有」ってWEB会議システムがあるのだけど、あれってFlashだけじゃないってことなんですね。 全然違う技術ってことかなー。 似たようなのを作りたいんだけど、中々切り口が見つからない〜。
>>712 AS3です。
CanvasっていうかButtonでもCheckBoxでもSpriteに
addChildしたら表示されないものでしょうか?
>716 Spriteはコンテナだから表示オブジェクトはなんでも入るよ。 でも、716さんの場合、ちょっと、らち明かないから。 該当のソースを晒したほうが、もっと良い回答を得られると思うのです。
もしかしてコンポーネントをステージに載せようとしてる? 確かライブラリのシンボルやコンポーネントは、 クラスを指定してコンストラクタさせないと、addChild()できないような気がする。
719 :
Now_loading...774KB :2009/06/27(土) 23:21:37 ID:J4GRAkyY
お尋ねしたいのですが、 テキスト入力枠をステージに3つ置き、そこに入力した数値を足した数を ダイナミックテキストとして表示したいのですが どうやらそのテキスト入力の値が文字列として返ってくるようで 「ムービー内のスクリプトが原因でPlayerの速度が低下〜」といったエラーが出てしまいます テキスト入力枠に入力した文字をNumber型に変換すればいいのか それとも数値を加算する際に変数を (a - 2009) * 11 + 1 + b + c; とそのまま足しているのでこの段階でString型になってしまうのか どちらにしてもその解決策がわかりません まだ初心者なのでもしかしたら的外れなことを言っているかもしれませんが どなたか、解決策があるのならば教えていただきたいです
日本語のスキルが不自由な質問が多すぎる 自分の知ってる事は全部他人も知ってるみたいに思ってるんかいな
>>716 普通は表示リストに追加されている(既に画面に表示されている)Sprite等のコンテナに
addChildしたものは、それがDisplayObjectを継承してるクラスであれば表示される。
で、Canvasってなに?自作クラス?それってDisplayObjectを継承してんの?
それをnewしてインスタンス生成して、stageにaddChildした時は表示されるわけ?
>>719 ASのバージョン何?
テキスト入力枠のインスタンス名はそれぞれ何?
入力した値を使うスクリプトを書いてるらしいけど、具体的にどこにどういう風に書いてるわけ?
>>719 です
自分の中で本当に聞きたい事がわけわからなくなっていたせいで
クソみたいな文章になってしまいました、申し訳ないです・・・orz
お聞きしたいのは
String型の変数をNumber型に変換する方法です
どなたか知っていたら教えていただきたいです
724 :
719 :2009/06/27(土) 23:37:10 ID:J4GRAkyY
ASのバージョンは2.0です 重ね重ねご迷惑をおかけしてすいません
mx系はSpriteにaddChildではダメだったんじゃなかったっけ?
>>724 Number(文字列)
var s:String = "10"; //数値と解釈できる文字列
var n:Number = Number(s); //nにsを数値にしたものを代入
trace(n); //変換された数値
trace(n+1); //数値なので文字列連結でなく加算
trace(s); //元の変数sは変更ナシ
>>718 ステージにCanvas載せてそれにSprite載せてます。
で例えばCheckBoxをCanvasにaddChildすると表示されますが
SpriteにaddChildすると表示されないという現象です。
>>721 Canvasとは
mx.containers.Canvas の事です。
>>725 やっぱりそうなんですか。。
ありがとうございます。
728 :
719 :2009/06/27(土) 23:54:48 ID:J4GRAkyY
>>726 なるほど!そういうことができたんですね
本当にありがとうございます!
3.0だけどTextFormatがSetTextFormatしても適用されないよう SetTextFormatしてもどっかでまた元に戻ってるんじゃないかと思うんだけど一体どうしてなんだよ
>>729 3。0ならなんか勘違いしててdefaultTextFormat使えば済む話なんじゃねーのかなそれは
mx系というの初めて聞いた! FlashMXの頃のコンポーネント? Flex系のクラス?
>>730 普通にできたよありがとう
でも何でSetTextFormatじゃ駄目なんだ
AS3の仕様は時々よく分からんよ
>>732 ドキュメントにかいてあるぞ
つーかぐぐればたくさんでてくる
727さんはもしかしてflexの方なのかな。 もしそうなら、ASのバージョンのほかに、flashかflexかも 前もって断ったほうがいいかもね。 というかflexがどんなんか僕は全然しらないけど、、。
Canvasってなに? って人はまずFlexを軽く知っとけ。
質問です。 ブラウザ上で表示されているときに 「閲覧者が別のサイトに移動する」「ブラウザが閉じられる」 ことって検出できるでしょうか? もしくは、C++のデストラクタみたいに、Flashが終了するときの処理を記述することって出来ないでしょうか? ActionScript3.0を使用しています。
738 :
Now_loading...774KB :2009/06/28(日) 16:18:20 ID:zccPRJuM
新しいsdkバグってない?embedしたソースが尽くエラー。 flash develop インストし直してしまったorz
ここにいる人の殆どは、FLASHでActionScriptを扱う人がおおいと思うのだけど。 質問に対してもFLASHで作業しているという前提で回答を考えていると思うのよね。 正直Flexや、FlashDevelop、とか今後だと、Airの内容とかを聞かれても ちゃんと答えられないと思うし、質問する側にとっても良い環境ではないと思う。 今後多くなりそうなら、スレを分割するとか、プログラマ板に誘導するなり、 してはいかがかなと思うんだが、どうだろうか。
740 :
Now_loading...774KB :2009/06/28(日) 17:45:41 ID:zccPRJuM
すまん、Flash CSを使ってコーディングしているという前提を知らなかった。
Flash使いがFlexの質問に答えられないとは限らないんじゃ それに分割したらそれだけ人が減って解答の勢いも減速しそうです 多数派以外は質問用のテンプレを作って使えば
それもそうね。テンプレで対応できればいいね。 ざくっとプログラム板を見てきたけど、まともなActionScriptの スレなかったよ、、。 (むしろこのスレがある意味FLASH/動画板で異端かも知れないけど。)
ていうか別にFlex知らなかったら答えなくていいだけだし どうでもいいと思うけど。
>>744 Flashのつもりで答えたら実はFlexのトラブルで双方混乱、
みたいな事態もあるかもしれんじゃん
こたえる人だけじゃなく、検索で事例を探していたり このスレ見て勉強していたりって人もいるから Flex、CSどちらの場合かくらいは書いといたほうがいいと思う
ビルトインのクラスが全く同じだったら特に混乱はおきないんだろうけど。 どうやら違うらしいから。表記だけはしたほうがいいなあ。
748 :
Now_loading...774KB :2009/06/28(日) 21:59:33 ID:zccPRJuM
flexはまた別にスレがあるっぽいからスルーでもいんじゃない?
749 :
737 :2009/06/29(月) 01:07:51 ID:1gusTEu8
>>743 ありがとうございます。
Event.DEACTIVATEとEvent.MOUSE_LEAVEはちょっと理想の動作と違いました。
調べたところ、Event.EXITINGが理想の動作のようでした。
(キチンと調べず質問してしまってすみません)。
ところが「Event.EXITING」と記述すると「未定義である可能性が高いプロパティ」
と出てエラーになってしまいます。
直前でEvent.ENTER_FRAMEとか使用してますし、Flash CS4の統合環境上で
「Event.EXITING」が青文字で表示されているのでつづり間違いもないと思います。
何か使用する条件ってあるんでしょうか?
FlashCS4, ActionScript3.0です。
よろしくお願いします。
>>749 Air専用の定数だから、プロジェクトがAir向けになってないとエラーになるとかかな。
751 :
737 :2009/06/29(月) 03:30:53 ID:XldfzZ65
>>750 ありがとうございます、Air専用だったみたいです。
カスタムクラス内のメソッドやプロパティに privateや、public などを表記しない場合は、 public と同じようにアクセス可能でしょうか?
>>753 何も指定しない時はinternal、パッケージの外側からはアクセスできない
>>753 表記しなかった場合はinternalの設定が適用される。
同じパッケージ内からのみアクセス可能。
>>753 省略時はinternal。
同一パッケージ内のみアクセスが許される。
>>754 さん、755さん、756さん
ありがとうございました。めんどくさがらずにpublicと書くようにします。
CPU負荷が高いので、CPU負荷を減らす方法を探しています。 FLASHが苦手なこととかありますか? 演算が苦手であればなるべく演算は一括で行うようにしますし、 そういうポイントがあれば教えてください。
>>758 質問内容がちょっと漠然としすぎ。
こういうコンテンツでこういう処理をしてて重いんですが?とかなら答えやすいが。
一般的な知識を求めてるなら「Flash パフォーマンス」とかでググるといろいろ出てくると思うぜ。
760 :
Now_loading...774KB :2009/06/29(月) 21:08:05 ID:EU20IAHw
AS3の総合的なFrameworkを探しているのですが、 ご存知でしたらオススメのものを紹介して頂けないでしょうか。 よろしくお願いします!
会社に元(組込系)プログラマがやってきてAS担当になったが、 ASをしたことないのは、仕方がないけど。 オブジェクト指向ぐらい知っとけ。ボケ。 なんでデザイナの俺が、教えなきゃならんのよ。
>>762 組み込み系ならしょうがないじゃん、あまりいじめるなよ。
意外とflasmとか与えたら信じられないプログラムかくかもよw
組み込み系は、オブジェクト指向とは無縁なのか。 素人がスクリプトを書いてると思ってウェブを舐めてたに違いない。
まあでもぐだぐだアクションスクリプトでオブジェクト指向って言われてもね
766 :
758 :2009/06/30(火) 11:59:25 ID:9rvKt/FI
>759 ありがとうございます。 まさにそういう内容が知りたいと思ってました。
>>765 に噛み付く
> まあでもぐだぐだアクションスクリプトでオブジェクト指向って言われてもね
ぐだぐだって、何処が?
もしかして、AS2の事を言っているの?
AS3に付いて言えば、折れはぐだぐだとは思わない!
ECMAScriptとは、袂を分けてしまったが、そのお陰でJavaのスタイルがかなり反映されてきている。
言語としての抽象度も上がって、かなり良いと思う
768 :
Now_loading...774KB :2009/06/30(火) 13:29:08 ID:VGAdOK0a
AS3 stricモード 各メソッドの内容はtraceで省略している。 package game{ import flash.display.Sprite; import flash.utils.Timer; import flash.events.*; public class MainGame extends Sprite { //コンストラクタ public function MainGame() { trace("コンストラクタの実行"); } //test用コード var testTimer = new Timer(5000,0); testTimer.addEventListener(TimerEvent.TIMER,addEnemyASet); testTimer.start(); function addEnemyASet(event:TimerEvent) { addEnemy(50,30); } function addEnemy(newX:int, newY:int):void { trace("addEnemyの実行"); } } } この、カスタムクラスを実行すると、 「未定義のプロパティ testTimerへのアクセスです。」「未定義のプロパティ addEnemyASetへのアクセスです。」エラー表記されるんだが、定義の仕方間違ってるんだろうか?
>>768 どう使ってるか知らんけど、見えてないんだったら
publicつけりゃいいんじゃね?
ありがとう。 publicつけても駄目だった。 まだ、良くわかんない。
>>767 古くさいし、洗練されてないといいたいところだが、続きはプログラマ/ム板でやろうか
772 :
768 :2009/06/30(火) 14:24:41 ID:VGAdOK0a
自己解決しました。 var testTimer = new Timer(5000,0); をコンストラクタ内に収めればエラーが回避できた。 でも、Timerクラスはコンストラクタでnewしないといけないのか? は、謎は残る。
ていうか普通、メソッドの中でインスタンスの作成や他のメソッドのコールしないか。 そんな書き方始めてみた。
774 :
768 :2009/06/30(火) 16:02:43 ID:VGAdOK0a
もちろん、実行のソースは、メソッドの中に他の関数への参照とか、インスタンスの生成 を記述しているんだけど。 ここに書くには複雑になって原因がわかりづらいので余計なものは省略した。
じゃあプロパティ変数のつもりで参照しようとしたら ローカル変数で参照が存在しなかったとかいうおちじゃね
776 :
768 :2009/06/30(火) 16:45:52 ID:VGAdOK0a
すまん。自己解決していなかった。やっぱりエラーがでる。 ローカル変数というより、関数の外側にあるメソッドと、変数なので そおいうおちではないようです。
777 :
768 :2009/06/30(火) 16:55:43 ID:VGAdOK0a
どなたか。手数だけど768をチェックしてくれないだろうか。 768のソースを「MainGame.as」と名前つけ、gameフォルダにを保存して Fla側のドキュメントクラスに指定すれば再現できるから。 何がよくないのか良くわからん。 基本的なASをまだ理解してないのかも知れない。
>>768 //test用コード
var testTimer = new Timer(5000,0);
testTimer.addEventListener(TimerEvent.TIMER,addEnemyASet);
testTimer.start();
↑この3行削除すればコンパイルは出来るよ。意図したとおりに動かないけど。
コンストラクタの中に入れれば多分意図したとおりになるはず。
あと
function addEnemyASet(event:TimerEvent) {
は、せっかくstrictモード使ってるなら「:void」をつけておいたほうが良いかと。
#なくても動くだろうけど。
ありがとうございます。どうやらTimerクラスをnew するときは そのカスタムクラスのコンストラクタの中に入れないといけないみたいですね。 ちょっといい勉強になりました。
>>768 そりゃインスタンス作ってないんだからaddEnemyASetはaddEventListnerの時点では未定義って言われる
staticな関数なら別だが
まぁ、そもそもクラス定義の中でtestコードの下二行みたいなのはダメなはず
変数の宣言と初期化はいいはずだが
>そりゃインスタンス作ってないんだからaddEnemyASetはaddEventListnerの時点では未定義って言われる >staticな関数なら別だが ああ、なるほど。 >まぁ、そもそもクラス定義の中でtestコードの下二行みたいなのはダメなはず 静的メソッドを除いて、メソッドや関数はコンストラクタ(カスタムクラス名のメソッド)の 中に無ければいけないということですか?
>>781 静的関数を除いてっていうか、クラス定義ってのは変数と
関数の宣言と定義を行うんであって
処理を直接class Hoge{}の直下に書いちゃダメ
>>781 >処理を直接class Hoge{}の直下に書いちゃダメ
あ、失礼 [処理]をですね。
カスタムクラスの基本が判ってなかったようでしたね。
大変勉強になりました。ありがとうございます。
784 :
Now_loading...774KB :2009/07/01(水) 00:15:55 ID:Eb10Lanw
だから、メソッドをコールするのはメソッドの中でやらないと だめだって書いたのに
君は他スレで、FLASHerを馬鹿にしてなかったか? FLASH IDEはデザインとプログラムと合わさってこそ、その価値を十二分に発揮できる。 webプログラムをしたければ、何もFLASHのプラットフォームでなくてもいいだろ。 perlでもphpでもやればいい。ましてや、ASプログラマがFLASHerを見下すなんてもってのほか。 FLASH の世界が広がったのは彼らが居たからこそ。 君みたいな人にASプログラマを名乗って欲しくはない。
なにそれこわい
perlとphpはサーバサイドプログラミング ActionScriptはクライアントサイドプログラミング そんな区別もつかないのか
ちなみに英語でflasherは露出狂、陰部を見せたがる変態 という意味があって 恥ずかしいから使わないほうがいいよ。Flashやってる人がみんな馬鹿だと思われたら困る。
というかなんでそれを最初に張らなかったのだろう
792 :
Now_loading...774KB :2009/07/01(水) 10:05:48 ID:o/KoE6FO
親MCの中に子MC(ボタンのような)を入れております。 親MCの第一フレームに this.onPress = function() { }; this.ko_mc.onPress = function() { }; とし親(自分自身)と子へのイベントonPressを記述 しておりますが親のイベントを設定すると入れ子の子MC はクリックできません。 解決策をご教授して頂けませんでしよう?
Flash以外に、AS3.0を読み書きパブリッシュできるエディタは無いでしょうか? オフィスではFlashを使用しているのですが、 自宅でも作業する必要が出てきたため なるべく安価に作業環境を構築できれば良いなと考えています。 マシンはOSX10.4です。
AS3ならFlexSDKやらFlashDevelopやらあるけど.flaってことだよな
>>792 as2では親MCにthis.onPressを設定しちゃうと下のonPressが取れない仕様なので、
親MCにはonPressChild()とかの関数を設定して、下の階層のonPressがコールされてから呼ぶようにするのはどうでしょう?
this.ko_mc.onPress = function(){
this._parent.onPressChild();
}
一般的にはこうならないような仕組みを考えるか、
どうしてもこうしないといけないのであれば、最悪hitTest使うとかの逃げ道もあります。
書き忘れたけど TextMateは日本語関係がダメなので、プラグインでハックして表示させないといけないん だけど、表示が今ひとつなのと、あとFlexSDKを自分でインストールして設定しないと いけないという面倒もある。
799 :
Now_loading...774KB :2009/07/02(木) 10:15:54 ID:nZvzgbjN
俗語っていうことは、日常的によく使われる言葉ということだ よく考えろ!
stage.addEventListener(MouseEvent.CLICK, setStar); function setStar(e) { var stp:int = Math.floor(Math.random()*4)+1; var target = e.target; var star= new Ster1; target.addChild(star); star.x = e.localX; star.y = e.localY; } マウスクリックしたらSter1〜4のどれかをランダムで配置する、ってのが作りたい。(綴りは故意 var star= new Ster1; ここでクラス名使って個体を識別するのは理解したけど、ランダムで選択する。って所がうまくいかない var stp:int = Math.floor(Math.random()*4)+1; これで乱数作って挑戦してみたけどインスタンス名みたいにはうまくいかなかった。 一応この構文のままでも、Ster1をクリック位置に配置する、までは可能。 環境はCS3です。
var ster:Class = Class(getDefinitionByName("Ster"+stp)); var mc:MovieClip = new ster(); こんな感じかな。
floorして+1じゃなくてceilでいいよな、とか思ってしまった
806 :
760 :2009/07/03(金) 08:45:59 ID:1i+ZfqB7
>>761 遅レスながらありがとうございます!
ちょっくら試してきますノシ
Math.random() 疑似乱数 n を返します (0 <= n < 1) なのでceilでは0になる可能性がある
スレ違いかもしれませんが「Box2dFlashAs」について質問させて下さい サンプルを元に組み込んでみたのですがgcされないメモリがどんどん増えていきます (付属のサンプルでも同様の現象が起きました) プロファイラを使ってみた所、主にb2ContactID、b2Featureなどの 衝突時に構築されるインターフェースが増えているようです これについて何か情報お持ちの方、ご教示願えませんか? 開発環境 ・Flash CS4 Progress ・AS3 ・FlashPlayer10.0.2
809 :
Now_loading...774KB :2009/07/04(土) 17:50:36 ID:pdUpBQvE
絵を描くソフトを作っているのですがフォトショップなどのように水彩などを使えるようにするため copypixelsで点を1ドットずつ打つ処理をしているのですがこれだと古いPCなどでは重すぎます 何か良い方法はないでしょうか?宜しくお願いします
知ったことじゃありません かえれ(><)
Box2dFlashAsってソース公開されてるよね?あ、ASだから当たり前か。 ソース追ってみれば? paperVison3Dとかもそうだけど、メモリ管理結構が雑だよ。てか、ろくに解放してない処理が結構ある。
as3で、Soundクラスで、音を外部のmp3を読まして 写真のスライドショーの動きに仕込んでいるのですが、 だんだん音が遅れてきてしまいます。 as3のこのように特定のタイミングで音を鳴らすという場合、 何か注意することってありますか。 次第にずれていくのがなぜなのか、わからないで困ってます。 ※タイムラインアニメーションは一切使っていません。
813です。 Flashでタイムラインを使って制作する場合だと、同期させるために、 ストリームという設定があるみたいで、それで同期できるみたいなのですが、 完全にスクリプトで作っている場合、 ストリームに該当するものってあるのでしょうか??
815 :
Now_loading...774KB :2009/07/05(日) 14:26:35 ID:vZYr0cmG
FlashCS3(AS3.0)をWinXPで使用。 Graphicsオブジェクトが参照できず困っています。 メインタイムラインのフレームアクションで var shObj:Shape = new Shape(); shObj.name="sh0"; var grObj:Graphics = shObj.graphics; mc0.addChild (shObj);//mc0はステージ上のMC としました。 つまり、mc0の中にsh0を追加し、これにGraphicsオブジェクトgrObjを生成しました。 ところが、trace (mc0.getChildByName("sh0")); では [object Shape] と出るのですが、 trace (mc0.getChildByName("sh0").grObj); だと下記のエラーが出ます。 1119: 未定義である可能性が高いプロパティ grObj に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。 目的は、clear()を使ってgrObjを消すことです。 どうすべきでしょうか?
>>815 その処理では、shObj.grObjを参照する処理になってしまいます。
shObjとgrObjは同一階層にある変数なので、grObj.clear()とだけすればよいと思います。
もしくは、直接mc0.getChildByName("sh0").graphics.clear()とするか
817 :
815 :2009/07/05(日) 22:02:23 ID:pC8yhEoe
>>816 さんきゅうです。grObj.clear()でOKでした。
mc0.getChildByName("sh0").graphics.clear()だと
1119: 未定義である可能性が高いプロパティ graphics に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。
となります。
でも不思議なのは、grObjはStage内のmc0の子のsh0と同じ階層にあるのに、何故
メインタイムラインのフレームアクションでアクセスできるのでしょうか?
(trace (grObj);も正常に表示されますし・・・)
>>817 getChildByNameで帰ってくるのはDisplayObject型でしたね、申し訳ありません。
これに関してはキャストしないとコンパイラがエラーを吐くようなので、
Shape(mc0.getChildByName("sh0")).graphics.clear()としてやれば大丈夫なようです。
変数へのアクセスですが、addChildは「その変数のオブジェクトを子として表示リストに加える」というだけで、
変数自体についてはこの場合、mc0もsh0もgrObjもすべて同じ階層にあります。
といっても当方はFlexユーザなので多少の齟齬があるかもしれませんが、たぶんあってると思います。
>>818 度々すいません。
Shape(mc0.getChildByName("sh0")).graphics.clear()は駄目です。
traceするとNullになります。
820 :
Now_loading...774KB :2009/07/06(月) 22:47:50 ID:CGSLBaHJ
激しくスレ違いかとは思いますが、PCを買い替え、ブラウザIE8を設定
FlashPlayerを最新に変えたのですが、サイトによってSWFが読み込まれないもの
がいくつか出てきました。
例えば
http://www.shiseido.co.jp/anessa/ ではTOPのムービーが出現した後、何も読み込まれません。(白い画面)
http://answer.nttdocomo.co.jp/4brand/index.html では、最初に現れるボタンをクリックした後、何も読み込まれません。
とはいうものも、全ての読み込みファイルが表示されないというわけ
ではないようです。
swfをキャッシュに残さないように特別に処理をしたスクリプトに対して
読み込みができなくなっているように思います。
激しく、スレ違いかと思いますが、他のスレよりASに詳しい方が
多い方がよいかと思って伺いました。
解決策をお分かりの方いらしたらお教えください。
あ、解決というのは、ブラウザの設定などによって、このような
表示を出さない方法があるか?ということです。
ASの作成のことではありません。どうぞよろしくお願いします。
どちらもボタンをクリックしたら他のSWFファイルをロードするようにしてるから crossdomainポリシーの設定がサーバー側で間違ってるとか古いとかかな。 自分のFlashPlayerの設定見てみたけど、特に問題になりそうなところは見当たらなかった。
>>819 trace (mc0.getChildByName("sh0"));で[object Shape]とでるにも関わらず、
Shape(mc0.getChildByName("sh0")).graphics.clear()がNullになるのはこちらではわからないです。
お力になれず申し訳ありません。
初歩的なことですみません BitmapDataの大きさを変更するにはどうしたらいいでしょうか?
>>823 動的に変更するには作り直すしかありません。
たとえとして、bitmapDataという変数に横100・縦100のデータを入れている場合、
それを内容そのままで横200、縦200にしたければ
var oldBitmapData:BitmapData = bitmapData;
bitmapData = new BitmapData(200, 200, false, 0x000000);
bitmapData.copyPixels(oldBitmapData, oldBitmapData.rect, new Point(0, 0));
oldBitmapData.dispose();
といった処理で実現できると思います。
すみませんArrayについて教えてください。 自分の常識で、普通は要素の番号を 0 以上の整数で指定するものだと思っているのですが、 以下のように -1 を指定しても動きます。 var myArray:Array = new Array(); myArray[0] = 0; myArray[1] = 100; myArray[-1] = -100; C言語のポインタに置き換えて考えると納得は出来るのですが、メモリ破壊とか起きていないか不安です。 この使い方は本来許されるのでしょうか?
>>827 ASでは配列はハッシュ(Object型)のように実装されているので、
myArray["-1"]のように文字列として指定した場合と(基本的に)同じです。
ASの配列の添え字はポインタのようにアドレスを指しません。
その面ではメモリの破壊などは起きないと考えてよいです。
ただ通常以外の範囲を使っているとバグが紛れ込みやすくなります。
またmyArray.lengthなどの計算がおかしくなるかもしれないので
その辺はいろいろ試してチェックしてください。
829 :
Now_loading...774KB :2009/07/09(木) 09:41:42 ID:+rQybXn2
AS3で 1個のビットマップをステージ上に大量にaddchildしたいのですが copypixels()を使って複製するのと、ライブラリに読み込んであるビットマップデータを たくさんインスタンス化するのとどっちの方がよいでしょうか?
>>828 827です。 返事が遅くなってすみません。
解説ありがとうございます。 Arrayの仕組み納得しました。
あのあといろいろ試してみたのですが、-1とか、0.5等の少数点付きのインデックスでも独自に要素が作られるようです。
空の配列を初期値とした場合、lengthの値は0以上の整数をインデックスに使った分だけがカウントされるようでした。
>>829 メモリや速度の点ではcopyPixels()を使った方が有利に思えますが、
背景の絵の上でアルファ付きのビットマップを動かす等の場合はインスタンス分けた方が扱いやすい気がします。
(背景と、大量に表示させる用のキャンバスのレイヤーを分ける等、工夫すれば問題なさそうですが)
>>831 ありがとうございます。
アルファを考えるとインスタンスの方が楽ですね
833 :
Now_loading...774KB :2009/07/10(金) 03:06:33 ID:RNaCjQYn
1つのボタンで2つのアクション付けるにはどうしたらいいですか?AS3です。 具体的には; 1回目でMovie再生 2回目でMovie停止 と言った感じです。
834 :
91 :2009/07/10(金) 09:35:25 ID:xmGN8PP5
button インスタンス名 : hoge bool isPushed_flg = false; hoge.onClick(){ if(isPushed_flg = false){ *ここに1回目 isPushed_flg =true; }else{ *2回目の処理 isPushed_flg =false; }
>>834 なんか他の言語ごっちゃになってないそれw
on/offのトグル形式だったらフラグで管理するのもいいけど、いっそのこと実行する処理を切り替えてもいいかもね。
初回だけメッセージを表示したい、なんて場合はこっちのが楽かな
button.addEventListener(MouseEvent.CLICK, onPlay);
function onPlay(e:MouseEvent):void{
//再生処理を記述
button.removeEventListener(MouseEvent.CLICK, onPlay);
button.addEventListener(MouseEvent.CLICK, onStop);
}
function onStop(e:MouseEvent):void{
//停止処理を記述
button.addEventListener(MouseEvent.CLICK, onPlay);
button.removeEventListener(MouseEvent.CLICK, onStop);
}
836 :
Now_loading...774KB :2009/07/10(金) 12:07:12 ID:J+xjdE3H
AS3でブレンドモード、スクリーンなどにしてにしてあるmcに、alpha 0→1のトゥイーンをかけると、フェードせず急に表示されてしまうのですが回避する方法はないでしょうか?
>>833 カウンター用の変数を設定して、ボタンをクリックする度にインクリメント。
同時にカウンター変数を2で割って、割りきれる時にMovie停止の条件を付ければ良いと思う
AS3でタイピングゲーム作ってて、テストプレイしてるとたまに止まります (タイマーイベントだけがなのか全体がなのか分かりませんが) タイプ音入れたらさらに止まる頻度が多くなりました これって重いせいですかスペック的に問題はないと思うんですが
>>838 このスレには現在、お前の思考を遠隔地から読み取れるエスパーはいません。
もう一度書き込み内容を確認して出直してください。
flash player(もしくはTimerイベントだけ)が突然停止するような症状について 考えられそうな原因に思い当たる節のある人はよかったら教えてください><
>>840 「停止」って表現がいまいちよくわかりません><
動きがカクカクするっていう意味なら重いせいです><
キー入力を受け付けないのとタイマーイベントに組み込んだカウンター (挙動を計るために呼び出される度に++して表示するようにした変数) も止まっちゃって動かない感じです 症状をもうちょっと限定するために色々試してみます><
>>840 停止するような作りをしているからです><
考えられる原因はいろいろとありすぎるので、設計を詳しく説明するとか
もっと再現する条件を絞り込んだ方がいいと思います><
><><><
845 :
Now_loading...774KB :2009/07/11(土) 06:14:41 ID:TvKTxPlY
wordpressで、最新の投稿の一覧表示を
テンプレートタグを使い、xmlを出力し、
そのxmlをflash側で読み込み、それぞれのタイトルをクリックすると、
flash側にそれぞれの記事を表示したいと考えています。
参考URL(バックエンドのブログは、MTのようです。)
http://www.keikotokyo.com/ →colum
作り方で、ヒントになるような参考記事など、アドバイスを
いただけないでしょうか?
848 :
845 :2009/07/12(日) 12:14:57 ID:Z9jOcja/
みなさんありがとうございます。 いま、いろいろ検証していて、 いきづまったので、お教えください。 xmlのデータをflash側に取り込もうとしていて、 ルートデータは、下記のようにしてとりだすことはできたのですが 子データの取り出しをどういうふうにしたらいいかわかりません。 ※xmlデータでいう<entry></entry>部分になります。 よろしくお願い致します。 actionscript// _global.index_xml = "test.xml"; _global.xmlIndex = new Object(); XML.prototype.ignoreWhite = true; indexXML = new XML(); indexXML.onLoad = XMLLoaded; indexXML.load(index_xml); function XMLLoaded(success) { rootNode = indexXML.firstChild; xmlIndex.firsttitle = rootNode.attributes.firstEntryTitle; _root.photo_entry.entryTitle.text = xmlIndex.firsttitle; }
849 :
845 :2009/07/12(日) 12:17:01 ID:Z9jOcja/
xml// <?xml version="1.0" encoding="UTF-8"?> <Index blogTitle="test" blogDescription="test" firstEntryTitle="test" firstEntryDate="20090711" firstEntryBody="test.jpg"> <entry entryTitle="testy" entryExcerpt="テストです。" entryDate="20090711" entryCategory="test" entryMore="photo_05-thumb.jpg" entryDescription="てすと" entryExcerpt="これはテストです。" /> </entry> </Index>
850 :
Now_loading...774KB :2009/07/12(日) 17:32:54 ID:d7uVY6TJ
すれちがいの超初心者です。 スタートボタンすら作れないほどですw ActionScript3.0ですが ・ボタン自体↓ btn_start.onRelease = function() { gotoAndStop(2); } なお、btn_startはインスタンス名です ・ムービーの動きを止めるために別レイヤーで↓ stop(); もしかしたら間違えて2.0の方を打ち込んでいるかもしれませんが、 どなたか教えてください…。
851 :
Now_loading...774KB :2009/07/13(月) 15:54:35 ID:81hLZjba
swfを外部読み込みして、 全画面表示にしているんですが、 ブラウザに追従して 縦横比を維持して 拡大縮小したいんですがどうカスタマイズしていいいか 教えてください。 環境は、flash9 as2です。 Stage.scaleMode = "noScale"; Stage.align = "TL"; var myMenu = new ContextMenu(); myMenu.hideBuiltInItems(); _root.menu = myMenu; this.imgLoad(); var resizeListener = new Object(); resizeListener.onResize = function (){ stageFix(); }; Stage.addListener(resizeListener); function stageFix(){ bg_mc._width = Stage.width; bg_mc._height = Stage.height; }
852 :
Now_loading...774KB :2009/07/13(月) 15:55:30 ID:81hLZjba
続きです。 function imgLoad () { var this_mc:MovieClip = this; var bg_mc:MovieClip = this_mc.createEmptyMovieClip("bg_mc", 0); var bg_depth:Number = bg_mc.getDepth(); var img_t:String = "test.swf"; var i_mcl:MovieClipLoader = new MovieClipLoader(); var initImgListener:Object = new Object(); initImgListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number) { per = Math.round((nLoadedBytes/nTotalBytes)*100); trace(per + "%"); }; initImgListener.onLoadComplete = function(target_mc:MovieClip) { _root.loadOK =true; }; i_mcl.addListener(initImgListener); i_mcl.loadClip(img_t, bg_mc); }
SWFから画像を読み込ませる際 SWFからの相対パスで読ませたいので HTML側でobjectとembedタグにbaseパラメータを追加する方法を試したんだけど まったくうまくいかん! 今はフォルダ内のa.swfが同フォルダ内のa.jpgを読み込む設定をして。 一つ上の階層に表示するためのHTMLがある状態。で細かいコードを書きたいんだけど 今帰りの電車で携帯で書いてるからコードが書けん。スマソ。情報が少ないのは百も承知でなんかアドバイスあったらよろしくおねがい 環境:WIN AS3
854 :
Now_loading...774KB :2009/07/13(月) 23:57:20 ID:DUTdP56b
Flex builder 3を使っているのですが private var mynewText:String = ""; var readFile:File =new File(mynewText); var fileStream:FileStream = new FileStream(); fileStream.open(readFile,FileMode.READ); var str:String = fileStream.readUTFBytes(fileStream.bytesAvailable) var str1:Array = str.split("\n"); //改行で分割して、それぞれを配列に差し込みます。 var value:int = str1.length; //配列の長さを取得 var number = new number[value]; for(var i=0; i<value ; i++) number[i] = parseInt(str1[i]); //型変換で数値に変換します のように、FileStreamで数字で書かれたテキストデータを Stringで読み込み、それぞれを分割して配列に入れたあと型変換するプログラム なのですが、splitの行でどうしてもシンタックスエラーが出てしまいます。 原因がよく分からないのですが、どうであると考えられるでしょうか?
こんな時間ですが・・・ AS3で 画像の余白を取り除く ようなことは出来ますでしょうか? 例えば、透明な100x100pxの画像の中に49x49pxの色付き矩形があるpng画像を読み込んで、 色付きの矩形の部分だけを扱いたいのです。 実際のサイズや形は不特定なもので、よくある画像編集ソフトの余白を取り除くような機能みたいなのがあればと思ってます。 ややこしい事かとは思いますが、どなたかお知恵をくださいorz <ネムイヨー
時計を作ったのですが、音がどんどんずれてしまいます。 Timerオブジェクトでも、Tweenerでもどちらにしても、 再生をほったらかしにしているとずれていってしまいます。 音は一度Soundクラスで生成した後、毎回playにするとずれますか? いい方法をご存知の方、おしえてください
>>856 BitmapDataに変換してgetColorBoundsRectを使えばいいんじゃないか
859 :
Now_loading...774KB :2009/07/14(火) 14:50:11 ID:zqUGfRwz
860 :
Now_loading...774KB :2009/07/14(火) 15:01:54 ID:cmgud2CK
携帯電話用に、電池残量を読み込むflashを作りたいのですが、 電池状態が4段階(電池0⇒電池1個⇒電池2個⇒電池3個(フル))の端末では動くのですが、 docomoSH06aのような6段階あるものでは動きません。 下記がソースです。どうしたらいいでしょうか? ///電池残量の取得をします battLevel = fscommand2("GetBatteryLevel"); /*電池残量に応じたフレームへジャンプさせます →電池の残量の値は、 →残量レベル3の時に「3」→残量レベル2の時に「2」→残量レベル1の時に「1」の値を取得し、これがタタイムラインとリンクしています*/ gotoAndPlay(battLevel+2); /*式を使って 取得した値に+2を加えてフレームへジャンプさせます →残量レベル3の時に「3」+2=5フレーム目へ →残量レベル2の時に「2」+2=4フレーム目へ →残量レベル1の時に「1」+2=3フレーム目へ さらにジャンプしたフレームから、それぞれの 残量レベルへのランダムが記述されたフレームへジャンプさせます*/
862 :
Now_loading...774KB :2009/07/14(火) 22:09:38 ID:ke0EdPR6
as初心者です。 flashでページトップボタン(ムービークリップ)をつくり、 ブラウザのスクロールバーをスムーススクロールしてページトップに戻すような スクリプトの記述がわからないので、 教えて下さい。よろしくお願いいたします。
863 :
Now_loading...774KB :2009/07/15(水) 06:51:47 ID:rxfTibRL
>>862 バジョンはAS3.0でいいの?
ちゃんと
>>1 を読もう
後日本語がよくわけわからん。
もうちょいわかりやすく
CS4+AS3での質問なのですが CS4側でストリーミング再生したサウンドのSoundChannelを 取得したいのですが、そのようなことは可能ですか? ストリーミング再生した音楽の音の波にあわせて MCを拡大縮小させたいのです。
var array:ByteArray = new ByteArray(); SoundMixer.computeSpectrum( array ); var peak:Number = array.readFloat(); scaleX = peak; scaleY = peak; で、いけました!お騒がせしました。
853です。 現在の状態を説明しますと。 flashフォルダの中に、a.swfがあり、そのswfが同階層にあるa.jpgを 読ませる設定をしています。 【SWF側】 var loader:Loader = new Loader(); loader.load(new URLRequest("a.jpg")); addChild(loader); stop(); そのひとつ上の階層にあるhtmlでパラメータに「base="."」を追加した記述をしています。 【HTML側】 <html> <head> <title>movie</title> </head> <body> <object> <embed src="flash/a.swf" base="." quality="high"width="300" height="300" /> </object> </body> </html> この状態でHTMLを開くと、Flash自体はよむけど そのFlashから読み込むはずのjpgが読んでくれません。 何が間違っているのでしょうか? もうずっっと悩んでます。。。 環境:win、as3
>>866 baseパラメータって使ったことないんでよくわからんけど
なんでobjectタグ省略しちゃってんだよ?
866です。
>>867 ひとまずどっちかだけでも良いかなぁとおもって
>>868 SWFObjectで試すも結果は変わらなかった
で。いろいろゴニョゴニョやってたら
解決しましたー!?
サーバにアップ&C:直下でなら問題なく表示されました!
デスクトップや他のローカル環境で作業していたので
表示されなかったようです。
理由はよく分かりませんが、FLVの読み込みみたく
"デスクトップ"みたいな2バイト文字をどっかで読んじゃってんのかなー?
更に詳しいことわかるひといたらよろしくです。
でもやっとひと段落。ふー。
870 :
Now_loading...774KB :2009/07/16(木) 12:21:38 ID:d5egu478
下記リンク先のトップページに記載されているような
写真がスライドするアクションスクリプトがダウンロードできるサイトをご存じないですか?
ジャバスクリプトで表現できるのであれば、そちらでも構わないのですが、
ぜひよろしくお願いします。
http://osaka.deli-m.net/top/
宣伝乙
872 :
Now_loading...774KB :2009/07/16(木) 12:42:29 ID:d5egu478
すみません。 宣伝ではないです。 本当に知りたくて。
その程度なら うちの会社に委託するといいよ
デwリwヘwルwww
文法について伺います。 loaderInfo.addEventListener(progressEvent.PROGRESS, progressHandler); 上のloaderInfoは、 @LoaderInfoクラスのオブジェクト ADisplayObjectクラスのプロパティ B質問自体がナンセンス のうちどれにあたりますか? すいません。どうぞ宜しくお願いします。
>>870 ASは2.0?3.0? MacかWinか?
2.0なら「Flash MX ActionScript ほぼ10行道場」(毎日コミュニケーションズ)
のp348に例がある。
ポイントは
1)ステージよりやや幅の広い画像をA,B(同じもの)2枚用意して、
連結して列車のように動かす。
2)Aが左に行ったらBの右に置く。
AS2です。 lineToするとMCの背面に描画されるんだけど 最前面に描画するにはどうしたらいいですか?
879 :
Now_loading...774KB :2009/07/18(土) 20:30:08 ID:R/jjdR2u
WinXP-Pro(CS3, AS3.0)です。
下記の記述でブラウザの新しいウインドウを開くことが出来たのですが
FireFoxを規定のブラウザにしているためこれが開いてしまいます。
var urlStr:URLRequest = new URLRequest("
http://www.2nn.jp/ ");
navigateToURL (urlStr, "_blank");
ASでブラウザの種類を指定することは出来ますか?(IEで開きたい)
>>878 lineTo用のMCを既存のMCより上に作ってそこに描くとか
AS2です。 (1) ライブラリに空のMCを作ってシンボルプロパティからクラス(A)をアタッチし、ステージに配置(mcA)した場合と、(2)フレームスクリプトでクラス(A)を impot A; mcA2 = new A(); した場合ではなにが違うのでしょうか? (1)の場合はコンストラクタでeval(this)すると、 ”_level0.mcA"が取得できますが、 (2)の場合は"undefined"となってしまいます。
883 :
Now_loading...774KB :2009/07/20(月) 00:20:35 ID:kVnOB7LL
AS3で点滅させるにはどうすればよいですか?
888 :
Now_loading...774KB :2009/07/20(月) 19:17:26 ID:/9OB+dvy
こんばんは、AS3での書き方を教えて頂けないでしょうか? onClipEvent (load) { this.gotoAndStop(_root.clickTAG); } as1から、html上に書かれたjavaを読みに行く書き方のようなのですが、 as3ですとどのように書けばいいでしょうか?
おれは絶対釣られないからね。
VisibleをTimerかTweenerで反転させるのが手軽でいいんじゃない
891 :
Now_loading...774KB :2009/07/21(火) 13:06:20 ID:jxK/nX9V
CS3のAS3.0でWinXPです。 ドキュメントクラスでのMCの扱いで質問です。 ステージの1フレ目にbutton1を置きドキュメントクラスのコンストラクタで button1.buttonMode=true; button1.addEventListener (MouseEvent.CLICK, button1_click, false, 0, true); と書きました。次いで2フレ目にbutton2を置き、上の記述の下に追記する形で button2.buttonMode=true; button2.addEventListener (MouseEvent.CLICK, button2_click, false, 0, true); としたところ、button2.buttonMode=true;の箇所で下記のエラーが出ます。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 button2をbutton1と同じく1フレ目に置けば問題ありませんが、設計上都合が 悪いです。2フレ目以降のオブジェクトをドキュメントクラスのコンストラクタで認識 させるにはどうしたら良いでしょうか? アドバイス願います。
892 :
Now_loading...774KB :2009/07/21(火) 13:14:24 ID:5wQe7kG3
as2.0です。 関数a,b,cがあって、中身はa_mc,b_mc,c_mcのフェイドイン処理を行います。 関数cを呼ぶ→フェイドイン処理が終わる→関数aを呼ぶ→フェイドイン処理が終わる→関数bを呼ぶ→フェイドイン処理が終わる ↑のような感じで次々に関数を呼ぶ仕様で、順序を任意で数パターン対応できるようなものを作ったのですが、 もっとかんたんなやり方があるような気がするのですがご教示お願いします。 今のやり方 関数a,b,cにフェイドイン処理が終わった後、関数motionを呼ぶようにしておく motionには配列orderに格納された順にフェイドインを実行する function motion(){ this[order.shift()].fade_in(); } function set_order(flag){ if(flag){ order=['c_mc','a_mc','b_mc']; }else{ order=['a_mc','b_mc','c_mc']; } } 関数set_orderで関数を呼ぶ順番を配列orderに格納しています。(実際は数パターンにわたって複雑に処理しています) こんな感じなんですがよろしくお願いします。
だれか開発手伝っていただけませんか 日給1万程度で。
>>891 >2フレ目以降のオブジェクトをドキュメントクラスのコンストラクタで認識
これは無理かな
>>892 要は、配列をシャッフルできればいいってことかな?
897 :
Now_loading...774KB :2009/07/21(火) 14:27:12 ID:5wQe7kG3
>>895 レスサンクスです。
わかりにくくて申し訳ありません
そうではなくて
motion()からfade_in()を呼んでそこから又motion()を呼んでの繰り返しが
どうもしっくり来ないって言うかもっとかんたんな処理は無いものかと思いまして。
>>896 レスサンクスです。
これしかないですかね
>>897 わざわざ各MCにフェイドインの関数準備して呼ぶより
関数にフェイドインさせるMC渡す形の方がスッキリしそうだけど
900 :
Now_loading...774KB :2009/07/22(水) 00:26:45 ID:OgxTp0ic
AS3.0です。初心者です、わかりにくく恐縮ですが、お願いします。 144個のムービークリップを配列に入れこみ、そのひとつひとつに対して、まずアルファ値をそれぞれランダムで与え、そこからだんだんとアルファ値を増やし、1まできたら減らし、というスクリプトを作りたいです。 ムービークリップのインスタンス名は、a_1からa_144と、「a_」以降の数字を増やすように名付けてあります。
901 :
Now_loading...774KB :2009/07/22(水) 00:27:38 ID:OgxTp0ic
(↑のつづきです)今、参考書を読みつつ作っている物が for (var i:int=1; i < 144; i++) { var back_array:Array = new Array("a_"+i) //for文を使い、ムービークリップを配列に入れているつもりです back_array[i]="a_"+i; var back:MovieClip=back_array[i]; //ムービークリップを取り出す back.alpha= alp; } var r:Number= Math.random();//ひとつひとつにまず与えるアルファ値用のランダムな数値 var alp:Number= 0+r; //アルファ値 var flg:int= 0; //フラグ back.addEventListener(Event.ENTER_FRAME, doEnterFrame); function doEnterFrame(e:Event):void{ if(flg == 0){ alp += 0.00001 if(alp>1) flg =1; }else{ alp -= 0.00001 if(alp<0) flg=0;//ここの部分はアルファ値の上下のさせ方のつもりです } }
902 :
Now_loading...774KB :2009/07/22(水) 00:29:00 ID:OgxTp0ic
(↑のつづきです)という物なのですが、 「TypeError: Error #1034: 強制型変換に失敗しました。"a_1" を flash.display.MovieClip に変換できません。 at kimsan_project_fla::MainTimeline/kimsan_project_fla::frame1() 」 というエラーが出てしまいます。 基本的な所が間違っているのでしょうが、いよいよ煮詰まってきてしまいました。。初歩的な質問で申し訳ないです、よろしくお願いいたします。
>>900 「ムービークリップを配列に入れこみ」って var back:MovieClip=back_array[i]
のこと?
型が全く違うじゃん。
これって、MC内部に記述する方法じゃ駄目なん?
あと、for (var i:int=1; i < 144; i++) じゃ、143個だ。
いきなり144個じゃなくて、5個くらいから基本を押さえながら
やった方がいい。
>903 回答ありがとうございます。 for (var i:int=1; i < 144; i++) { var back_array:Array = new Array("a_"+i) でムービクリップを配列に入れて、 var back:MovieClip=back_array[i] で配列からムービークリップから取り出しているつもりでした。 AS3.0だとムービークリップに直接記述ができないのと、できれば一括して管理できたら、と思っていました。 配列に入れたムービークリップのプロパティの設定をしたいのです。 個数違いの指摘、ありがとうございます。
//ムービークリップの数 const MOVIE_CLIP_NUM:uint = 144; //ムービークリップが144個ならフラグも144個必要 var flgArray:Array = new Array(MOVIE_CLIP_NUM); for (var i:int = 0; i < MOVIE_CLIP_NUM; i++){ //フラグ配列初期化 flgArray[i] = false; //単に個々のムービークリップにアルファ値を設定したいだけなら配列に入れる必要はない //配列アクセス演算子でムービークリップを指定してアルファ値にランダムな値を設定 this["a_"+(i+1)].alpha = Math.random(); } //個々のムービークリップにEnterFrameを設定するのではなく //一つのEnterFrameの中のfor文ですべてのムービークリップを設定する stage.addEventListener(Event.ENTER_FRAME, doEnterFrame); function doEnterFrame(e:Event):void{ for (var i:int = 0; i < MOVIE_CLIP_NUM; i++){ var mc:MovieClip = this["a_"+(i+1)]; if(!flgArray[i]){ mc.alpha += 0.1; if(mc.alpha > 1) flgArray[i] = true; } else{ mc.alpha -= 0.1; if(mc.alpha < 0) flgArray[i] = false; } } }
>905 ありがとうございます!!!!! 無事、望みの動きができるようになりました!! 解りやすい解説もつけていただいて、感謝です。研究し直します。 本当に、、、ありがとうございました!
質問です。 TextFieldに貼り付けられたAS3のソースコードを ハイライト表示してくれるライブラリとかってないですか? D.evalを使って、コードを実行できるAIRアプリを作っているんですが、 その際、実行するコードのハイライト表示をしたいと考えています。 ご存じでしたら教えてください。
908 :
Now_loading...774KB :2009/07/23(木) 00:58:30 ID:ON5lXHlf
>>907 hidemaruのhilightファイルを元に一からつくれば?
あと、D.evalでAS3を実行させるってのはセキュリティ的に大変危険では?
909 :
907 :2009/07/23(木) 03:00:53 ID:75IYDZBX
もし1から作るなら、秀丸のを参考にするのはいいですね。 ちょっと考えてみます。 D.eval+AIRのセキュリティのヤバさは、何となく知ってるつもりです。 むしろ、D.evalにチョンプロを食わせて、ファイルの一括処理などがができたら (危ないけど)面白いなと思って作ってます。
911 :
907 :2009/07/23(木) 21:02:39 ID:75IYDZBX
>>910 ありがとうございます。
ちらっとソース読んだんですが、正規表現でゴリ押しっぽいですね。
結構参考にできそうです。
実際に動作確認してはいないのですが、ソースを読む限りE4XのインラインXML(?)と
/[0-9]+/gm みたいな形式の正規表現のハイライトには対応してないようです。
でもXMLにマッチする正規表現や、「正規表現にマッチする正規表現」はわりとネットに
転がってそうなので、自作の方向で考えてみます。
と思ったんですが、XMLの開始タグと
if (a<b == c>d)
↑な文の区別が付かなそうな気がしました。とりあえずがんばります。
912 :
Now_loading...774KB :2009/07/25(土) 01:33:28 ID:WhtEhEuh
flvplayerを使って、swfを操作することできますか? スライドバーや、プレイボタンを使ってswfのアニメーションを コントロールしたいのです。
913 :
Now_loading...774KB :2009/07/25(土) 01:59:11 ID:nUj1x3OR
できない
914 :
Now_loading...774KB :2009/07/25(土) 15:46:33 ID:JEd7RU/r
四角の中にプレイヤーが入らないようにしたいです! これでいいですか? if(_root.maru._height < this._height && this.hitTest(_root.maru)){ if(this.getBounds(_root).xMin > _root.maru._x || this.getBounds(_root).xMax < _root.maru._x){ _root.maru._x = this.getBounds(_root).xMin;} else{_root.maru._y = this.getBounds(_root).yMin;} }
915 :
Now_loading...774KB :2009/07/25(土) 17:34:30 ID:JORPJsSo
XMLのノードの値で、例えば、右記のように、<link>あああ</link> <link></link>で囲まれたタグを、 Flashの中で、テキストフィールドの中にXMLデータとしてインサートして、 <link></link>なかで囲まれたものを、<a href=""></a>として自動変換するような サンプルスクリプトをおしえていただけないでしょうか。 よろしくおねがいいたします。
>>915 なんかそういう仕組みのアプリ作成依頼を
どこぞの業者が募集してたな
917 :
915 :2009/07/26(日) 08:00:56 ID:gTSrRi1Y
スクリプトでなく、アプリレベルでないと難しいですか?
as3だったら正規表現でいけるよ マッチングパターンはぐぐればいろいろでてくるでしょ
919 :
Now_loading...774KB :2009/07/26(日) 10:34:13 ID:XHO4XY+8
replaceすりゃいい
Box2Dに自分で作成した画像を適用させる勉強をしていたのですがよくわからなくなりました。
http://d.hatena.ne.jp/matsu4512/20090103 このFlashのソースをダウンロードし、必要なライブラリ(Box2DとTweener)とソースに記載されているpngファイルを同じディレクトリに保存したのですが、CS3でムービープレビューしたところ
「1110:定数は初期化されませんでした。 private static const YukkuriImage:Class;」というエラーがでてきて実行できません。
どうしたらいいのでしょうか?
921 :
Now_loading...774KB :2009/07/26(日) 14:38:52 ID:31GsuDQK
FlashCS3(AS3.0)をWinXPで使用。 beginGradientFillでの色配列で質問です。 var shObj:Shape = new Shape(); var grObj:Graphics = shObj.graphics; と定義して grObj.beginGradientFill (GradientType.RADIAL, colorArr, alphaArr, raitioArr, mtArr, SpreadMethod.PAD, InterpolationMethod.LINEAR_RGB, -0.3); colorArr[0]='0xCCCCCC'; colorArr[1]='0xCCCCCC'; として最初全面灰色に塗りました。 次に、grObj.clear (); でクリアし、外部XMLから新しい色パラメーターを読み込んで 下記のようにしましたが反映されず、各々「勝手に」白,黒に変換されます。 colorArr[0]=MovieClip(root).parm0;//水色('0x8acad5') →白になる colorArr[1]=MovieClip(root).parm1;//濃い空色('0x8aca6a') →黒になる ※目標は、ステージ中心から少し右にずれた所に中心を持つ同心円の水色→濃い空色のグラデーション ところが、色配列には変数を使わずに直接 colorArr[0]='0x8acad5' などとすると 色設定が反映されます。 変数経由で色が変化しない理由は何故でしょうか?
beginGraidentFillの配列のパラメーターって文字列じゃなくて数値じゃ
すみません。bmp の floodfill について質問させて下さい。 ColorPickerで取得した値(fgColorとする)で塗りつぶそうと思って bmp.floodfill(posX, posY, fgColor.selectedColor); とするのですが、上手く動きません。色の値を bmp.floodFill(oldX,oldY,0xff0000ff); みたいな感じで固定にすると上手く動くので、何か渡し方が違う気がするのですが 型は合ってるように思うので、どうも良く分かりません。 稚拙な質問で申し訳ないですが、ご教示いただけますと幸いです。
924 :
923 :2009/07/27(月) 09:49:18 ID:erGVcIY9
>>923 posX, posY のところ描き間違えました。こちらは
bmp.floodfill(posX, posY, fgColor.selectedColor);
bmp.floodFill(posX, posY, 0xff0000ff);
で上も下も同じ値です。色指定のところだけ違います。
どうぞよろしくお願い致します。
>>924 ColorPickerはRGBで管理しててfloodFillはARGBじゃないのかな
bmp.floodfill(posX, posY, fgColor.selectedColor | 0xFF000000);
でいけんじゃない?
>>925 バッチリ動きました!! | 0xFF000000 で指定できるの知りませんでした。
もっかいリファレンス読んで勉強し直してきます!ありがとう〜!!
927 :
Now_loading...774KB :2009/07/27(月) 16:31:11 ID:smsMTHs9
flashで「パブリッシュ」したswfをロード(loadSWF)すると ルートオブジェクトがMainTimelineとなり、 「書き出し(イメージorムービー)」したswfをロードすると ルートオブジェクトがMovieClipとなるのですが、 これらの違い、理由について分かる方いらっしゃいますか?
928 :
Now_loading...774KB :2009/07/27(月) 16:34:12 ID:smsMTHs9
>>922 有難うございます。
parseInt('8acad5', 16)で10進法に変換すればOKでした。
930 :
Now_loading...774KB :2009/07/27(月) 20:57:32 ID:bao8yyv2
>>930 手元で状況再現しないので何とも言えないけど、
(上部メニュー) > 編集 > 環境設定 > (左部メニュー) > ActionScript > フォント
で、フォントをMS ゴシックとかにしてみるとよいのでは?
>>930 Ctrl+Shift+8で解除出来る。
アクションパネル右上ボタンからでも可。
>>930 Ctrl+Shift+8で解除出来る。
アクションパネル右上ボタンからでも可。
934 :
930 :2009/07/28(火) 00:57:04 ID:tJxm7xIx
>>931-933 Ctrl+Shift+8で出来ました!
有難う!!!! Thanks a lot !
935 :
Now_loading...774KB :2009/07/28(火) 03:08:41 ID:fV2ycU+D
var folder:File = new File("C:\\hoge\\"); var files : Array = folder.getDirectoryListing(); for(var i:int=0;i < files.length;i++){ var file : File = files[i]; ta.text+=files[i].nativePath+"\n" } フォルダ内のファイルを読み込むたびに テキストエリアの表示を読み込んだファイル名に更新したいのですが これだと全部読み込んだあとに一気に全部表示されます。 ひとつひとつ表示するにはどうすればいいのでしょうか アドバイスお願いします
>>920 EmbedメタデータはCS3では使えないCS4から
937 :
935 :2009/07/28(火) 05:17:27 ID:fV2ycU+D
すみません、読み込みが一瞬で終わってるから 一気に表示されてるように見えるだけみたいですね。。。
938 :
Now_loading...774KB :2009/07/28(火) 21:07:48 ID:NqKX55QH
FlashCS3(AS3.0,AIR_1.0)をWinXPで使用 AIRのソケットで外部のXML(パラメーターを書いたXML)を読み込み、それを元に StageのMC内で描画を行いました。 これはこれで正しく動作したのすが、これとは別に外部フォルダにあるMP3をリスト化して 表示する動作で下記のエラーが出て困っています。 ReferenceError: Error #1065: 変数 ::xml は定義されていません。 at SongPropMC/onFrame()[SongPropMC::frame1:66] ※変数 xml は、ソケット通信のクラスで var xml:XML; と宣言して使用しているのみ。 しかし該当するクラスの記述を見てもXMLとは無関係のもので、しかも、SongPropMCは 65行までしかありません。 取りあえずSongPropMCのonFrame()は無効にしても問題ないので、これを消したところ 今度は下記のエラーが出ました。 ReferenceError: Error #1065: 変数 ::xml は定義されていません。 at SpectDisp/onFrame()[SpectDisp::frame1:33] SpectDispもXML読み込みとは無関係です。 ハッキリ言ってモグラ叩きの状態です。また、エラーメッセージで指摘された行番号に 間違いがあれば対処しようがありますが、2番目のSpectDispにも33行というのはありません。 どなたか、アドバイス願います。
939 :
Now_loading...774KB :2009/07/29(水) 07:35:57 ID:EDU5HyD+
FlashCS4(AS3.0)をWinXPで使っています。 シーン1のフレーム1に基本画面を、 シーン1のフレーム10にムービークリップA(全体で20フレーム)を シーン1のフレーム20にムービークリップB(全体で30フレーム)配置しています。 全てのシーンにボタン1、ボタン2が表示されています。 ボタン押すと(連打してもそのつど)指定したムービークリップが最初から最後まで表示されるようにしようと 以下のようなコードをフレーム1に書きました。 // フレームをカウントする変数 var i:int = 0; addEventListener(Event.ENTER_FRAME, onEnterFrame); Buttion1.addEventListener(MouseEvent.CLICK, onButton1Click); Buttion2.addEventListener(MouseEvent.CLICK, onButton2Click); // フレームごとに基本画面に移動するかチェック function onEnterFrame(e:Event):void { i--; if ( i == 0 ) this.gotoAndStop(0); } // ボタン1クリック時 function onButton1Click(e:MouseEvent):void { i = 20; this.gotoAndStop(10); } // ボタン2クリック時 function onButton2Click(e:MouseEvent):void { i = 30; this.gotoAndStop(20); }
↑の続きです。。 ボタン1をクリック後(ムービークリップAが再生中)に ボタン2をクリックすると、意図通りすぐにムービークリップBが i=30で指定した30フレーム再生されます。 しかしボタン1をクリック後(ムービークリップAが再生中)に再度ボタン1をクリックすると ムービークリップAはクリックから少し間をおいて再生されはじめます。 そして1度目のクリックで指定されたi=20と思われるあたりで (2度目のクリックで再生されたムービークリップAは再生途中) 基本画面に戻ってきてしまいます。 このようなスクリプトで、 ボタン連打時にも対応する方法はありませんでしょうか。 よろしくお願いいたします。
すみませんが、socketクラスの送信バッファの仕様って、 容量どれくらいなんですか? どうしても256バイトまでしか送信できないのですが・・・。
>>939 俺ならフレームをカウントするんではなく、再生中のムービーが最後のフレームに達したかをチェックするわ
ボタンがクリックされるたびにムービーはgotoAndPlayで頭から再生し直して
943 :
Now_loading...774KB :2009/07/29(水) 23:03:57 ID:rwDk3QUs
すいません、リンケージしたサウンドを変数を使ってstartさせようとしてるんですが、 上手くいきません。 var se001:Sound = new Sound(); se001.attachSound("SE_HYUN"); i="se001"; [i].start(); ←この書き方がおかしい 最後のとこの文法が間違ってると思うのでどなたか修正していただけますか…
944 :
943 :2009/07/29(水) 23:31:44 ID:rwDk3QUs
あ、できた、なんでだろ。 自己解決です、すいません
ステージ上に3つ、クリックしたら外部swfを呼び出させるムービークリップを配置しているのですが、 どうしても3つ目が作動しないんです。 l_btn.addEventListener(MouseEvent.CLICK,dolClick); function dolClick(evt:MouseEvent):void{ load_light(); } で、たしかにインスタンス名をl_btnにしているのですが、、 l_btnの上にマウスをもって行っても、指の形にすらなりません。 しかし、コンパイルエラーも何も表示されません。 インスタンス名が間違っている以外で、正常に作動しない原因というものはあるんでしょうか?
>945 すみません、自己解決しました、申し訳ない。。。
書き込むと自己解決できる魔法のスレッド
とある女性と仲良くなりたいのですが どうすればいいでしょうか? 声を掛けることすら出来ません
949 :
Now_loading...774KB :2009/07/30(木) 09:53:42 ID:r054Uwy/
フラッシュMX2004 きちんと保存されずに困っています。 スクリプト変更→保存→次の日フラッシュ起動させると一部のスクリプトが変更されていない あるMCに書いたスクリプトはきちんと保存されているのに他のMCに書いたスクリプトは元のままとか そんな感じなんですが何が原因なんでしょうか? 決して保存し忘れとかではないです。 毎日フラッシュ起動後、どこかしら保存されてないので、 その部分の手直ししてから、その後の作業開始で効率が悪すぎて困っています。 お願いします。
WindowsVista CS4体験版 ボタンを押すとgotoAndStopやnextFrame、prevFrameで別フレームに飛ばすようにしてるんですけど、 (↓のような感じで) next_btn.onRelease = function(){ this._parent.nextFrame(); } lesson1_btn.onRelease = function(){ this._parent.gotoAndStop(5); } 同じフレームに置いてる同じボタンでも効くときと効かない時があったり、 (goto〜の場合に)フレーム数で指定してるのに、 同じボタンを押しても違うフレームに飛ぶときがあったり(5に飛んでたのにたまに6に飛ぶなど)して混乱してるんですが これはどうしてこうなってしまうのでしょうか?
>>949 正規品ですか?アップデートしてますか?
>>950 必要なフレームが読み込み終わる前に、アクションを実行してるとか
なんだろね。MX2004はアクションパネルで押しピンみたいなの押してスクリプト固定すると、反映されないようなバグがあった気がするけど
953 :
Now_loading...774KB :2009/07/30(木) 13:15:46 ID:r054Uwy/
お答えありがとうございます。
>>951 正規品です。
アップデートというのは
MXからMX2004へのアップデートとか言うことですか?
それならしてません。
最初にかったMX2004のままです。
>>952 押しピンは使ってますので
それなんですかね
とりえあず保存する時は押しピンを戻してからやってみます。
>>951 ボタンを押すタイミング……とかそういうことですか?
見当違いなことを言っていたらすみません
>>953 そうではなくて、2004用のアップデータね。Adobeにあるよ。
>>954 フレーム遷移を行う場合は、必要なフレームまで確実に読み込んでから
スクリプトを実行するように設計しないと意図した動作にならないよ、ってこと。
ネットで動画を見る時のように、Flashの実行にもファイルを読み込むには多少
(たとえ一瞬にみえても)の時間はかかるわけです。
で、たとえばフレーム1が読み込まれていても、フレーム15が読み込まれていなければ
その時点ではフレーム15に移動することはできません。
Flashには、ファイルの読み込み完了を検知する方法もあるので、それを使えば
この問題が回避できます。
もしかしてこれが
>>950 の原因じゃないかもしれないが、考えられる可能性のひとつ。
>>955 全て読み込まれるまで操作を待つ、ということですか
ためしに十分に待った後操作をしましたが、今回の原因はそれではないようです
どうもnextFrameではなく、goto〜で直接フレームに飛んだ際に、
そのフレームにあるnextFrameやprevFrameのボタンが無効になっているように思えます。
一部、特定のフレームのみであって、直接フレームに飛んだ場合すべてが同じ状況になるわけではないです。
957 :
938 :2009/07/30(木) 15:06:32 ID:yL4vyFit
すいません。 何かヒントはないでしょうか? ググっても1件だけ症状の報告があるだけです。
>>956 だとすると、これ以上はもっと具体的な情報がない限りわからんです。
そもそも、たとえボタンが無効になっていなくても、フレーム遷移しただけでは
ボタンのアクションは実行されないはず。
trace()するとか、flaの内容を簡略化するとかして、再現の条件を絞り込んでみるのがよさそう。
>>958 onReleaseの中でtraceしてみたんですが
なんかボタンが上手く動いているときにすら出力がなされないというよくわからない結果になりました……
>>959 同じインスタンス名のボタンやらが
ステージ上に重なって2つ以上あるとかない?
>>960 そういうことも特には……
ちょっと長いこと悩みすぎてるんでここいらで終わらせてしまいます
ありがとうございました
962 :
Now_loading...774KB :2009/07/30(木) 19:51:47 ID:ZWLf89EU
>>961 ボタンはどうやって配置してるの?
actionscriptで配置してたりする?
>>962 ライブラリで作ってそこからドラッグで持って行っていますが
964 :
Now_loading...774KB :2009/07/31(金) 17:26:45 ID:wW3yEn/+
なんかスプライト同士がくっついた時に、それをキャプチャーして そのスプライト同時を画像にする事は可能ですか?
>>955 アップデートしてみました。
おかげで今日はきちんと保存されてました。
ありがとうございました。
BitmapData
967 :
Now_loading...774KB :2009/08/02(日) 15:44:56 ID:TaflAZnC
AS2、parafla、vistaです。 ローカルに変数を保存しようと思っています。 paraflaのプレビューでは、paraflaを再起動させても保存されているのが確認できます。 しかしswfファイルを再生した場合、一度終了させると保存されていません。 どうしたら保存がうまくいくでしょうか。下にコードも書いておきます。 so = SharedObject.getLocal("data"); //書き込み so.data.hiscore = _root.score; so = SharedObject.getLocal("data"); //読み込み _root.hiscore_text = so.data.hiscore;
保存確認はどうやってるの? data.solの有り無しorタイムスタンプだけで調べてる場合は 保存場所がプレビュー時と違ってるとか?
969 :
Now_loading...774KB :2009/08/02(日) 22:45:05 ID:ph0efH/F
質問です。 xp/AS3でoverrideをしようとしてるのですがうまくいかず 「1020:override としてマークされたメソッドは、別のメソッドをオーバーライドする必要があります。」 というエラーがでます。 overrideしようとしてるのは、papervison3dのdrawParticleです。 何か原因に心当たりがある方はいらっしゃいませんか?
写真が5秒ごとに切り替わるスライドショーを作りました。 mcに写真を格納するのですが、 removeChild(mc) として確かに表示が消えているのですが、 numChildrenでstage上の子オブジェクトの数を数えると、 どんどん5秒ごとに一つずつ値が増えていってしまいます。 mc = nullと加えてもだめでした。 どうやれば、確実にnumChildrenの値をずっと、 1に保つことができますか? 数が増えていくってことは、メモリを食って言ってるってことですよね?
※すみません、970です。足りない部分があったので、 再度書き込みます。 写真が5秒ごとに切り替わるスライドショーを作りました。 mcに写真を格納する仕様です。 5秒経過後に、 removeChild(mc) としていったん、mc自体を消します。 そしてまたmcを表示して、次の写真を表示します。 これを行うと、確かに表示が消えているのですが、 numChildrenでstage上の子オブジェクトの数を数えると、 どんどん5秒ごとに一つずつ値が増えていってしまいます。 mc = nullと加えてもだめでした。 どうやれば、確実にnumChildrenの値をずっと、 1に保つことができますか? 数が増えていくってことは、メモリを食って言ってるってことですよね?
972 :
>>967 :2009/08/03(月) 09:21:56 ID:ujJFBngZ
>>968 レスありがとうございます。
保存確認は特にしていません。
あと、プレビュー時とswf実行時の保存場所は違っていても良いです。
しかし、swf実行で保存したはずのデータも、次のswf実行時には消えています。
>>972 保存確認というのは、つまり、何をもってして「データが消えている」
「保存されていない」という判断をしているのか?ってことじゃないかな。
単に確認の仕方が悪くて、保存されていないように見えてるという可能性はないのかどうか。
ところで、任意の時点で保存したいなら、flush()したほうがいいよ。
974 :
Now_loading...774KB :2009/08/03(月) 15:59:41 ID:4G00Ridm
質問です。 下記のようなxmlを表示させたいのですが その場合のXPathの書き方ってどうなるのか不明です <example id='1' name='abc'> nameの中身を取り出したい場合の記述がわからず。 失敗例) aa['example'] = XPathAPI.selectNodeList(xml.firstchild,"example/[@id=*]") 環境はAS2.0、 xmlのverは1.0です 以上、よろしくお願いします
975 :
Now_loading...774KB :2009/08/03(月) 16:27:27 ID:jzVO9nNY
AS3初心者です。よろしくお願いいたします。 下記にようなエラーが発生しました。 何が原因なのかエラー一覧のAdobeの公式をみてもわかりませんでした。 エラー内容 --1084: シンタックスエラー : identifier が ○○ の前に必要です。-- 上記が何をどう示しているのか皆目検討がつきません。 ご指南ください。 よろしくお願いいたします。
var or function
977 :
Now_loading...774KB :2009/08/03(月) 17:23:18 ID:ujJFBngZ
>>973 ローカルに保存した変数を普通の変数に代入し、テキストボックスに表示させているので
そのテキストボックスを見て確認しました。
また、保存フォルダを見てみると、paraflaのプレビューで作られたsolファイルはありますが
それ以外には見当たりません。なお、flush()しても変わりませんでした。
プレビューなら正しく動くということは、AS以外の問題である気がしてきました…
あまり長引くのも迷惑かと思うのでもう終わりにしても構いません。
回答してくれた方々、ありがとうございました。
AS3,FlashDevelop,FlashPlayer10で開発してます。 var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, traceData); loader.load(new URLRequest("xml.xml")); private function traceData(event:Event) : void { var xml:XML = new XML(loader.data); var xmlList:XMLList = xml.item; trace(xmlList.length); } <?xml version="1.0" encoding="utf-8"?> <data> <item id="1"> <name>DQ</name> <price>80</price> </item> <item id="2"> <name>FF</name> <price>100</price> </item> <item id="3"> <name>TOV</name> <price>120</price> </item> </data> これでEvent.COMPLETEのメソッドは呼ばれるんですが、 取得したデータの中身が空っぽで、lengthが0になってしまいます。 どうかご指南ください。
>>978 URLLoader.dataFormatの指定がいるかも
>URLLoaderDataFormat.TEXT の場合、受け取るデータは、読み込まれたファイルのテキストを含むストリングです。
>URLLoaderDataFormat.BINARY の場合、受け取るデータは、生のバイナリデータを含む ByteArray オブジェクトです。
>URLLoaderDataFormat.VARIABLES の場合、受け取るデータは、URL エンコードされた変数を含む URLVariables オブジェクトです。
>デフォルト値 : URLLoaderDataFormat.TEXT.
失礼します、質問させて下さい。環境はFlashCS3 の AS3.0です。 ボタンクリックで、時差でムービークリップを再生後に動くようにしたく、Timerを組み込んで作っています。 中に入るムービークリップが入れ替わりたいため、それぞれa_1 a_2 a_3〜というようにインスタンス名をつけています。 今、仮にスクリプトを組んでいるのですが、クリックでa_3は動くものの、Timerを作動させて再生&動かすa_1 a_2に関しては 「条件は未定義であり、プロパティがありません。」と出てしまいます。 先に変数 ii を宣言し、それを後の this["a_"+(ii+1)]というように代入させていっているのですが、 Timer内のものたちには数値がきちんと代入されていない、ということなのでしょうか。 ひとつの変数をすべてに生かすことは、できないのでしょうか? 大変初歩的な質問で申し訳ありません、、教えて頂けると幸いです。
981 :
Now_loading...774KB :2009/08/04(火) 00:33:24 ID:xT8iMwDP
980です。仮に組んだスクリプトは、以下の通りになります。 var ii:int = 1; a_btn.addEventListener(MouseEvent.CLICK,xClick); function xClick(evt:MouseEvent):void { this["a_"+(ii+2)].play(); var a_3xTimer:Timer = new Timer(900,1); a_3xTimer.addEventListener(TimerEvent.TIMER,do3xTimer); function do3xTimer(e:TimerEvent):void { this["a_"+(ii+2)].x += 57 } var a_2Timer:Timer = new Timer(200,1); a_2Timer.addEventListener(TimerEvent.TIMER,do2Timer); function do2Timer(e:TimerEvent):void { this["a_"+(ii+1)].play(); } var a_2xTimer:Timer = new Timer(1100,1); a_2xTimer.addEventListener(TimerEvent.TIMER,do2xTimer); function do2xTimer(e:TimerEvent):void { this["a_"+(ii+1)].x += 57 }
982 :
Now_loading...774KB :2009/08/04(火) 00:36:40 ID:xT8iMwDP
//981のつづきです var a_1Timer:Timer = new Timer(400,1); a_1Timer.addEventListener(TimerEvent.TIMER,doTimer); function doTimer(e:TimerEvent):void { this["a_"+ii].play(); } var a_1xTimer:Timer = new Timer(1300,1); a_1xTimer.addEventListener(TimerEvent.TIMER,do1xTimer); function do1xTimer(e:TimerEvent):void { this["a_"+ii].x += 57 } a_3xTimer.start(); a_2xTimer.start(); a_1xTimer.start(); a_1Timer.start(); a_2Timer.start(); }
それぞれのタイマーのaddEventListenerで指定しているリスナー関数が、関数xClick内にあるためthisの参照先が変わっているからです 関数 do3xTimer do2Timer do2xTimer doTimer do1xTimer をxClickの外に書けばいいと思います
984 :
Now_loading...774KB :2009/08/04(火) 02:33:42 ID:xT8iMwDP
>983さん ありがとうございます、無事解決できました!! xClick関数でいうthisとは、xClick命令をかけているa_btn自身になってしまう、というかんじなのですね、 納得です。。。
>>979 様
お答えいただき、ありがとうございます。
しかしURLLoader.dataFormatを変えても
XMLファイル内のデータを取得できませんでした。
loader.bytesLoadedプロパティでみても0と出てきてしまいます。
もう少しがんばってみます
986 :
Now_loading...774KB :2009/08/04(火) 10:39:44 ID:BCHoRaF0
Flash Player 9 です。 外部の mp3 ファイルを再生しようとしています。 例えば test.mp3 を再生します。 var mcSound:Sound = new Sound( this ); mcSound.loadSound( "test.mp3", true ); ところが、結果は、 早送りみたいな再生になってしまって、 8分あるはずの mp3 ファイルが 1分ほどで早送りの音で再生されてしまいます。 ビットレートや長さが違う mp3 ファイルに代えても 結果は同じで、早送りみたいな再生になってしまいます。 どうすれば普通に再生してくれるでしょうか?
>>986 間違いなくMP3側の書き出し設定の問題
サンプリングレート:44100Hz
ビットレート:128kpbs
あたりで書きだして読み込んでみ?
>>985 lengthじゃなくてlength()じゃねーのかな
たぶん読み込めてんじゃない?
trace(xmlList.length(),xmlList[0]);
989 :
Now_loading...774KB :2009/08/04(火) 11:07:03 ID:BCHoRaF0
>>987 おっしゃる通りでした。
モノラルで 16kbps, 32kbps の mp3 ファイルでは
上述のように早送りになってしまったのが、
64kbps にしたら、正常に再生してくれました。
低ビットレートの mp3 ファイルを
普通に再生する方法はないのでしょうか?
990 :
Now_loading...774KB :2009/08/04(火) 12:26:56 ID:RVAbsNtM
FLASHとMYSQLを連携するのに一番簡単なのはPHPを使う方法ですか?
991 :
Now_loading...774KB :2009/08/04(火) 12:47:54 ID:Rchse4OL
オライリー「詳説 ActionScript 3.0」ですが、CS4の環境で学習書とするには 内容が古いでしょうか? 高価なものなので悩んでいます。
>>991 AS3.0の本だからCS4でも問題ないんだけど、あの本は1冊目に読む本では無いかなあ
良い本なので、持ってて損はしないけど、ちょっと深めの話題なんだよね
難しいとかではなく、「なんでAS3.0はこういうつくりなのか」という事が載ってる本
>>989 外部サウンドを読み込んで使う方法じゃあ、無いんじゃないかなあ
効果音みたいなものだったら、Flashだったらライブラリに埋め込んでおいて、Flashをパブリッシュする際にビットレート落として書きだすとかできるんじゃないかな
995 :
991 :2009/08/04(火) 16:54:04 ID:Rchse4OL
>>993 Flash本体の学習書は別ですが、AS3.0では1冊目で、少々高くても1冊で済めばと考えました。
原著が2年前ですし、どこかで古い(FlashPlayer10向けには?)という書評を見かけたもので
一度は決めたんですけど心配になりました。書店で立ち読みしても判断付かないんですよね。
オライリー本は好きで、JSやCSSなどを学習しています。
最近の入門書を含めて再検討してみます。ありがとうございました。
>>995 ああいう本は、ある程度やりたいことが出来るようになってから
知識と応用範囲を広げるために読む門じゃないのかな
面白いのは分かるけど、読むことが目的になりがちなので注意
998 :
997 :2009/08/04(火) 21:02:46 ID:R19pxm6s
自己解決しました。 ByteArrayを.toString()で文字列にして比較したのが間違いでした。 ByteArrayを.readUTFBytes()で読み込んで等価比較したらif文がすんなり通りました。 1時間悩んだのが恥ずかしいですw
999 :
Now_loading...774KB :2009/08/05(水) 00:01:20 ID:joiUa8TU
kinenn kakiko
1000 :
Now_loading...774KB :2009/08/05(水) 00:02:30 ID:joiUa8TU
umeume
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。