ActionScript 誰かが物凄い勢いで解答するスレ 18
1 :
Now_loading...774KB :
2007/11/12(月) 12:30:07 ID:PRp7fq4z
importしたクラス(Fusekit)をloadMovieした外部ドメインのswfでも使いたいと思っています。 大体動いているのですが、 10回に1回くらいの確率でloadした外部swf内でimportしたクラスが使えなくなってしまいます。 確実に使えるようにするにはどうしたらいいでしょうか? 読み込み元 import com.mosesSupposes.fuse.*; ZigoEngine.simpleSetup(Shortcuts, PennerEasing, FuseFMP); System.security.allowDomain("hoge"); ......... this.abc_mc.onRelease = function() { this._parent.xyz_mc.loadMovie("hoge") } 外部swf import com.mosesSupposes.fuse.*; ZigoEngine.simpleSetup(Shortcuts, PennerEasing, FuseFMP); ............ 8 professional、as2、Macです
4 :
Now_loading...774KB :2007/11/13(火) 10:37:46 ID:Oeqmi3PX
cs3のActionScriptで質問です。 テキスト処理をした後にMCに貼り付けるクラスを作りました。 そのクラスから戻り値を得たいのですが、どうすればいいのでしょうか? メインクラス内で自作クラスを呼び出してます。 var McT:mcText=new mcText(0,50);←自作クラスに数値を渡して呼び出してます。 addChild (McT);←自作クラスで作ったMCを表示してます。 自作クラスmcText内 return "戻り値";←この値をメインクラスに渡したい。 メインクラスから戻り値を参照する方法を教えてください。
>>4 自作クラスが提示されてないので良くわからんが、
普通に自作クラスにメソッド作って、メインではそれを呼べばいいのでは?
6 :
Now_loading...774KB :2007/11/13(火) 17:47:44 ID:QRW9JTEe
Flash7形式で作ったムービーをFlash4に対応させるにはどうすればいいですか? Actionscriptにエラーが出てしまいマスオブジェクト
スレ違い承知で、すみません。 ActionScriptプログラマにお仕事をお願いしたいのですが、 凄腕さんたちに募集をかけられるような場所はありますでしょうか? そもそもフリーでやられている方がどの位いるのかも判らず。。 宜しくお願いいたします。
制作マッチングサイトにでも行っておくれ。レス不要。 早い話が消えてくれ。
>>6 ひとつ前のバージョンまでしかサポートしてないので
flash5をどっかから入手します
FlashMX2004Pro、Winです。初心者の中の初心者です カーソルキーを押して、ある座標からある座標へ行って 元のところに戻ってくるようにするのはどうすればいいですか? ある座標に行くまではできましたが、元に戻り方がわかりません。 初歩的な質問ですいません。
元のX,Y座標を残しておけばいいんじゃね?
>>11 返答ありがとう。でもわからない…(ぁ
>ある座標に行くまではできましたが、元に戻り方がわかりません。
なんていいましたが、ぼくのやり方では瞬間移動してしまっていてだめでした。
ある座標まで速度を持って移動して、ある座標まで行くと
元のところに速度を持って戻ってくる という動きをカーソルキーを長押しではなく
1回押したらするようなスクリプトを…だれか……お願いします。
>>12 誰かがスクリプトを提供したとしよう。
で、次につまずいた時どうするんだ?
またここで「スクリプトお願いします」なんて言うのか?
そんな初歩的な問題でスクリプトの提示を求めてどうするんだ。
勉強して来い。
14 :
Now_loading...774KB :2007/11/14(水) 05:53:57 ID:dzD7pPnJ
AS3で以下のようなクラスを作りました。 フレームイベントは取得できるんですが、マウスイベントが取得できません。 public class Main extends Sprite { public function Main() { graphics.beginFill(0x000000); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); graphics.endFill(); addEventListener(Event.ENTER_FRAME, onEnterFrame); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } private function onEnterFrame(event:Event):void { trace("frame"); } private function onMouseDown(event:MouseEvent):void { trace("down"); } } どのようにしたら取得できますか?
15 :
Now_loading...774KB :2007/11/14(水) 10:25:41 ID:cVNne3Io
>>14 import flash.events.MouseEvent;
>>14 ほんとだ。
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
だと動いた
AS3.0にて、複数のLoaderを作ろうとしています。 for (var i:Number = 0; i<3; i++) { var lLoaderName:Loader = Loader("lLoader"+i); var url:URLRequest = URLRequest(i+".jpg"); lLoaderName.load(url); addChild(lLoaderName); } これだと、強制型変換に失敗とかで動作しません。 何か手はないものでしょうか。
とりあえず、iはuintな。インスタンス作るにはnewするだろ。 複数作りたいなら複数の名前が必要だよな。 少なければそれぞれ変数を作るけど、多ければ配列にとるよな。
19 :
6 :2007/11/14(水) 17:53:01 ID:OYo5tqY/
>9 ありがとう愛してる
20 :
Now_loading...774KB :2007/11/14(水) 18:04:55 ID:BagmXFIi
MacOS10.4.10、CS3 です。 XML で <item:D> のように、「:」コロンの付いたノードがあるとき、 これにアクセスするにはどうすればよいでしょうか?
>>20 Namespaceクラスを使うんだけど、
たぶんそのXMLにitemのxmlnsの定義があるんじゃなかな?
>>18 こんな感じですか?余計なもの省いてます。
var test_array:Array = new Array("test0","test1","test2");
for (var i:uint = 0; i<3; i++) {
var test_array[i]:Loader = new Loader();
}
実際はもっと多いんで配列とループで処理したいんですが、
上記のスクリプトでもエラーで動作せず、です。
AS3で、ある配列を可変長変数の引数へ取りたいんですが どうすればいいんでしょうか。 var array:Array = ["a", "b", "c"]; これを hoge(array[0], array[1], array[2]); こんな感じで渡したいです。 変数のサイズが実行時まで分からないので 手打ちでの指定はできません。 よろしくお願いします。
すいません、説明が圧倒的に変ですね ×ある配列を可変長変数の引数へ取りたいんですが ○ある配列を可変長変数hoge(... rest)を引数に取る関数へ渡したいんですが
25 :
Now_loading...774KB :2007/11/15(木) 01:48:56 ID:8ha8QyLu
質問させて下さい。 flash上でユーザーに手書きで図形を書かせ、 それが丸なのか四角形なのか三角形なのかを判別したいのですが どのようなアルゴリズムが考えられますでしょうか?
壊れたTVみたいにノイズがはしるのをよく見かけるけどあれはASなのでしょうか? そしてASの場合どのような技術を使っているのでしょうか? 環境はマクロメディアフラッシュプロフェッショナル8です。 よろしくお願いします。
>>27 探そうと思いましたが見つかりませんでした。
しかし準備不足なのは理解しましたのでまた出直してきます。
親切にありがとうございました。
>>22 var test_array:Array = new Array();
for (var i:uint = 0; i<3; i++) {
test_array[i] = new Loader();
}
trace(test_array);
>>23 配列の参照を渡せばいいじゃん
var array:Array = ["a", "b", "c"];
hoge(array);
function hoge(ar:Array){
for(var i:uint=0;i<ar.length;i++){
trace(ar[i]);
}
}
>>29 hoge側の引数は(... rest)で変えられないんです。
PHPで言うとcall_user_array_func()みたいな感じの
呼び出しをしたいです。
また間違えた ×call_user_array_func() ○call_user_func_array()
すいません自己解決しました hoge.apply(null, ['foo', 'bar' ... ])で 可変長引数に渡せました。ありがとうございます
33 :
Now_loading...774KB :2007/11/15(木) 09:51:40 ID:ftYp6t9K
testArray[0] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 配列の列を足しり掛けたりしたいのですが やりかた教えていただけないでしょうか?
>>29 は〜なるほどね〜
ありがとうございました。
35 :
Now_loading...774KB :2007/11/15(木) 12:36:55 ID:trHuDKwn
質問です。 現在FlashLite2.0でゲームを作成しているのですが、ゲームをクリアしたら プレゼント画面のサイトに飛ばしそこからJavaを使いランダムに各プレゼント画像 のページへ飛ばしたいのですが、何かこれよりもいい方法はありますか? まだFlash初心者な為、ご教授お願い致します。
36 :
Now_loading...774KB :2007/11/15(木) 13:15:36 ID:v64G3nrQ
>>21 解決しました!
ありがとうございます。
Namespace クラスを定義して、
コロン2つ書いたら取得できました。
↓こんなふうに
trace(myXML.item::D);
37 :
Now_loading...774KB :2007/11/15(木) 13:49:09 ID:bJcTVdOp
すいません。ちょっと困っているので教えて頂けませんか? 違う階層同士のラジオボタン(コンポーネント)をグループには出来ない のでしょうか?何とかやってみたいのですが上手く行きません。 もしダメな場合、他にいい方法はないでしょうか? 何卒ヨロシクお願い致します。
38 :
Now_loading...774KB :2007/11/15(木) 15:14:25 ID:vI61uL2S
FLASH8を使用しています。 main.swf内に配置したStageMCに、外部からsub.swfを読込みます。 main.swfの該当フレームには stageMC.loadMovie("sub.swf"); と記述します。 sub.swfの内容は500×325の画像を9枚並べた1500×975のMC(インスタンス名:Photo)と ボタン×9が有りボタンのロールオーバーに応じて該当する座標に画像がスクロールすると いうものです。 (その2へ)
39 :
Now_loading...774KB :2007/11/15(木) 15:16:11 ID:vI61uL2S
(その2)sub.swfの内容 『オブジェクトアクション』PhotoMC内に記述 (1フレーム目) X_dif = (X_Pos-_x)*0.2; Y_dif = (Y_Pos-_y)*0.2; _root.Photo._x = Number(X_dif)+Number(_x); _root.Photo._y = Number(Y_dif)+Number(_y); (2フレーム目) gotoAndPlay(1); 『クリップアクション』Photo配置フレームに記述 onClipEvent (load) { _root.Photo.X_Pos = 225; _root.Photo.Y_Pos = 125; ←最初に配置される座標 } 『ボタンアクション』×9 on (rollOver) { _root.Photo.X_Pos = 225; ←各座標ごとに設定 _root.Photo.Y_Pos = 125; ←各座標ごとに設定 } (その3へ)
40 :
Now_loading...774KB :2007/11/15(木) 15:17:34 ID:vI61uL2S
(その3) 上記でやってみたところ、sub.swf単独では完全に機能するのですが、Main.swfに読込むと sub.swf自体は読込まれていますが、ボタンのロールオーバーが機能しません。 念のためsub.swfの1フレーム目にローディングバーを設置して、全部読込んでから2フレームへ 行く様にしてみてもダメでした。どこがダメだか教えていただけないでしょうか?
>>33 そんだけじゃ解らんw2次元配列か?
自分がやりたいことを具体的に日本語で書く。
>>35 特に問題がないのならそれで良いと思うよ。
>>38 _lockrootあたりを試してみるとか
>>42 出来ました。有り難うございました。
subでrootをしていするとmainのrootを参照しちゃってたんですね。
thisとかparentとかを試してみても駄目だったので本当に苦労しました。
ホント助かりました。
44 :
35 :2007/11/15(木) 17:35:47 ID:trHuDKwn
>42さん ありがとうございます。 携帯向けゲームの為、やり方を swf(90KB)→クリア→swf(87KB)と2つに分けたのですがクリアしてから もう片方のswfに飛ぶ事ができません。 どう記述したら飛べるでしょう? 詳しい方ご教授お願い致します。
>>45 デコンパイラソフトを持っている人にやってみてくれって言ってるのかw
FlexのColorPickerで色変更時のイベントを取る時 EventとColorPickerEventのどちらでみるのがいいんでしょう? 自分が見る限りどちらも同じように意図通り動作してるようですが。 (選択された色はselectedColorプロパティでみるので、 イベントオブジェクトのプロパティは使いません) あ、イベントオブジェクトのプロパティを使わないのが邪道?
イベントオブジェクトのプロパティが必要ないならどっちでもいいんじゃない
49 :
Now_loading...774KB :2007/11/16(金) 19:31:12 ID:Xz5pVAmW
〜年〜月〜日からの経過日数を表示する方法ってありませんか。 たとえば、2007年4月1日からの経過日数とかです。
>>49 ・Dateオブジェクトその1にコンストラクタなりsetFullYearなりで
2007年4月1日を設定
・Dateオブジェクトその2にコンストラクタなりsetFullYearなりで
差日をとりたい年月日を設定
・Dateオブジェクトその2.getTime() - Dateオブジェクトその1.getTime()
の値を86400000で割る(86400000ミリ秒=1日)
・その割った値が差日になる(ハズ
>>49 Dateクラスの日付のデータは、ミリ秒単位の数値だから、引き算すればいいよ。
あとは「日」の単位にすればおk
var d1:Date = new Date("2007/4/1")//基準日
var d2:Date = new Date()//調べたい日
var days = ((Number(d2)-Number(d1))/1000/60/60/24)
>>0 trace(days + "日経過しています。")
52 :
47 :2007/11/16(金) 21:06:42 ID:iYjOOFbH
>>48 レスありがとう。
どっちでもいいことにしようっと。
53 :
Now_loading...774KB :2007/11/17(土) 14:24:43 ID:fpzaTnFK
54 :
Now_loading...774KB :2007/11/17(土) 14:51:58 ID:fpzaTnFK
>>51 さんの方法でやると、1行目でエラーが出てしまいます・・・
>>54 正しくはこれ↓
var d1:Date = new Date(2007,4,1)//基準日
var d2:Date = new Date(2007,4,5)//調べたい日
var days = ((Number(d2)-Number(d1))/1000/60/60/24)
>>0 trace(days + "日経過しています。")
Dateクラスに入れる引数は数値だから、年、月、日、時間、分、秒、ミリ秒の順で数値として入れる。
>>54 AS3だとコンストラクタに日付型式の文字列とれるみたいだけど、AS2以前なら
年月日を↓みたくそれぞれカンマで区切って設定。
var DATE_MIL:Number = 1000*60*60*24;
var d1:Date = new Date(2007,3,1); //月部分は0始まりなので注意
var d2:Date = new Date();
trace(Math.floor((d2.getTime() - d1.getTime())/DATE_MIL)+"日経過しています。");
ありゃ、かぶったwすまん
要するに、どの環境でコーディングしてるか明記しなかった
>>49 が悪いってことか
Flash8で、datagridに配列から呼び出した内容を順に入れていきたいのですが 文字列の方が表示されません。数字のほうはふつうに表示されます。 //my_dgというDataGridを画面に配置しています。 System.useCodepage = true; var myDP:Array = new Array(); var Item1:Array=[2,5,8,44]; var Item2:Array=["aa","あ","zxc"]; for (var i=0; i<3; i++) myDP.addItem({id:i, name:Item1[i], name2:item[i]}); my_dg.dataProvider = myDP; my_dg.hScrollPolicy = "on"; 文字列を表示するのに、何をいじればいいのかわかりません。 すいませんがどなたかよろしくお願いします。
AS2.0以降は変数名などの大文字小文字を区別します
>>60 さん、おはずかしながら動きました。
ありがとうございます
62 :
sage :2007/11/18(日) 17:07:08 ID:urTdv9eF
http://youmos.com/news/button_element にあるような画像みたいに、ある特定の部分のマスクを反転して
なおかつ、その境界をぼかしてハイライトしたいのですが、良い方法はないでしょうか?
* 表示する画像を表示用とキャッシュ用に作成
* 表示用の画像をColorMatrixFilterで透明度を下げて暗くする
* 選択した範囲をキャッシュ用のBitmapDataから表示用のBitmapDataにコピー
というようにして、ぼかさない場合はうまくできてるんですが、ぼかしたい場合には
どうしたら良いのでしょうか。
>>62 BlurFilterを使って、グラデーションマスクをかける
>63 それだと逆にマスクをかけた部分が暗くなってしまい、イメージとは逆になってしまいませんか?
62です。
>>63 すいません。さらにBitmapDataとしてもっておきたいのを書くのを忘れてました。
>>64 背景を暗くして、手前にグラデーションマスクをかけたMovieClipを配置する
その状態をBitmapDataにしたいなら、全体をBitmapDataにする
ActionScript4.0 スレたてていいすか??
>>64 こんな感じでどお?
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.filters.BlurFilter;
var point = new Point(100,100);
var w:Number = 200 ,h:Number = 50 ,blurSize:Number = 10;
var blurMask:MovieClip = selectmc.createEmptyMovieClip("blurMask",0);
var imageMC:MovieClip = selectmc.createEmptyMovieClip("imageMC",1);
var blur:BlurFilter = new BlurFilter(blurSize,blurSize,3);
blurMask.beginFill(0x000000,100);
blurMask.moveTo(blurSize,blurSize);
blurMask.lineTo(w-blurSize,blurSize);
blurMask.lineTo(w-blurSize,h-blurSize);
blurMask.lineTo(blurSize,h-blurSize);
blurMask.lineTo(blurSize,blurSize);
blurMask.endFill();
blurMask.filters = [blur];
imageMC.setMask(blurMask);
imageMC.cacheAsBitmap = true;
var matrix = new Matrix();
matrix.translate(-point.x,-point.y);
var bmp = new BitmapData(w,h);
bmp.draw(targetmc,matrix);
imageMC.attachBitmap(bmp,0);
selectmc._x = point.x;
selectmc._y = point.y;
targetmc._alpha = 50;
70 :
Now_loading...774KB :2007/11/19(月) 01:07:28 ID:PqVKDlLj
自鯖などを使わずに、Flashのデータを『書き換えて』 ローカルPCに『ファイルとして』保存する事は可能でしょうか? FileReferenceを拡張して書き換える処理を挿入したりすれば可能になるのでしょうか?
どうも初心者です。swfの中にフォームメールを作って、phpと連携させてメールを送ろうとしてるのですが、なぜかLoadVarsで渡しれるはずの変数がPHPに渡されないのです。メールはちゃんと送信されますが、フォームで入力した情報が全て空白になっています。
コードは以下のようになっており、
至って簡単なんですが、たぶん初歩的な間違いをしていると思われ、
もし何処が間違ってるのか分かるエロい人いたらぜひご教授を!!
Flash側のボタンインスタンスのスクリプト
on (release) {
var emailResponse:LoadVars = new LoadVars();
emailResponse.onLoad = function(success:Boolean) {
if (success) {
commentInput.text = "Successful!!";
} else {
commentInput.text = "Error!";
}
};
var gData_lv:LoadVars = new LoadVars();
gData_lv.userName = nameInput.text;
gData_lv.userEmail = emailInput.text;
gData_lv.userComment = commentInput.text;
gData_lv.sendAndLoad("sendmail.php",emailResponse, "POST");
}
sendmail.php側のスクリプト
<?php
$to = '
[email protected] ';
$subject = "Email Inquiry";
$headers = "From: ".$userName." <".$userEmail.">";
mail($to,$subject,$userComment,$headers);
print true;
?>
>>70 その条件では無理。ファイルとしてならphpでサーバーに落として、それを
DLさせるとかかな。
>>71 php側での受け取り変数名は$_POST["プロパティ名"]になる。
つまり$_POST["userName"]とか$_POST["userEmail"]とか。
73 :
71 :2007/11/19(月) 06:19:50 ID:jBAdWh2g
おおっ、早速のアドバイスどうもです。上手くいきました!! PHP上ではそんな風に記述しなければならないんですね。 確か以前は変数直接書き込んでも上手くいった気がしたんで… 有り難うございました。m(_ _)m
ActionScript3.0を学習するのにオススメのHPはありますか?
75 :
へるぷ :2007/11/19(月) 10:45:55 ID:3tUipTzW
今モバイル向けゲームを作成してるんだが PCでは動かす時にKey.isDown(○○)を使うじゃないですか 携帯向けにKey.isDown("6")としてみたら全く動きません。 何か記述方法自体違うんですか?
76 :
へるぷ :2007/11/19(月) 12:38:00 ID:3tUipTzW
解決しました。 てかこのスレってほんとに詳しい人全然いないですよね。 今まで役に立った事一回もない
77 :
Now_loading...774KB :2007/11/19(月) 13:03:44 ID:BJN2SFGR
>>76 自分も動かなくて困ってたんですが
どうやってやったんですか?教えてください。
>76 俺も動かなくて放置してたんだ どうやって解決したの?
79 :
へるぷ :2007/11/19(月) 13:47:42 ID:3tUipTzW
80 :
70 :2007/11/19(月) 14:48:09 ID:PqVKDlLj
>>72 有難うございます。セキュリティの都合とかなんですかね…
残念ですが諦めます。
配列の中身をランダムで入れ変えるにはどうすれば良いでしょうか?
Math.random関数使って 配列の中身をランダムに入れ変えるといいよ
答え入力式のクイズゲームのようなものを作っています。 キーボードから入力したテキストを「text」に表示 リターンキーを押すと次のフレームへ飛ぶ というのをやりたいのですが、思うようにいきません。 1.文字を間違えたときに 「del」や「Backspace」を押しても文字が消せない 2.Enterキーを押しても次のフレームに飛ばない 3.Enterキーを押した後は textに新たな文字を書き込めないようにしたい(が、方法がわからない。 どなたかご助力いただけると助かりますm(_ _)m onClipEvent (keyDown) { if(Key.isDown(Key.Enter){ gotoAndPlay = (2); } else{ this.text += String.fromCharCode(Key.getAscii()); } }
>>83 すいません、微妙に修正。
onClipEvent (keyDown) {
if(Key.isDown(Key.Enter)){
gotoAndPlay(2);
} else{
this.text += String.fromCharCode(Key.getAscii());
}
}
86 :
sage :2007/11/19(月) 23:12:54 ID:xLeC5i3W
お伺いしたいのですが、 ホームページのトップページを作るとして、 メインの大きな写真をクリックすると、 その写真の下にメニューボタンが4つほど ぼやーっと浮かび上がるようにいしたいのですが、 どのような記述をすればよいでしょうか? MXでMacOS9.2です。 初心者の質問ですみませんがよろしくおねがいします。
すみません、名前にsage入れてしまいました。
別にsage義務なんかないからいいよ ぼやーっと浮かび上がるMCを作成して1コマ目でストップさせておく 大きな写真をクリックしたらそのMCを再生 メニューが浮かんだところでまたストップさせればいい
BitmapDataをMXML上に表示するにはどうしたらよいのでしょうか? ImageにはBitmapDataを食わせる口がないですし、LoderをaddChildしてもサイズが正しく認識されません
90 :
89 :2007/11/20(火) 22:25:03 ID:9SWJMMNj
89です。 自己レスです。 ImageにはcontentにBitmapが格納されているんですね。 失礼いたしました。
ActionScript3で二点ほど質問をさせてください。 1)「あるイベントが完了するまでの間、待機し続ける」の様な処理は皆さんどうしていますか?(Threadのwaitの様な処理) イベントに対してイベント完了フラグを持たして、 それがtrueになるまで待ち続けるのはあまりに非効率で・・・。 標準で用意されていると思い探してみるも見つからないのですが、 私の調べ不足でしょうか? 2) XMLクラスに対してString形式のXPathでアクセスするにはどうしたらいいでしょうか? グーグルなどを使用してas3での有効な方法が発見できず困っています。 どうかよろしくお願いいたします。
時間に応じてキャラ画像が変わるblogパーツみたいなものがあると嬉しいんだが 例) 起床 06:00-06:59 起きてきたところ 朝食 07:00-07:59 食事 午前 08:00-11:59 生活 昼食 12:00-12:59 食事 午後 13:00-14:59 生活 おやつ15:00-15:59 おやつ食べてる所 夕方 16:00-18:59 生活 夕食 19:00-19:59 食事 夜 20:00-20:59 TVみたりとか 就寝 21:00-21:59 寝に行くところ 睡眠 22:00-05:59 ベッドの中 みたいに時間によって指定したカテゴリの画像をランダム表示したいんだが まず時間帯による条件指定から分からないorz サンプルのコードが出せないのでスレ違いといわれるかもしれないので せめてどこが参考になるかというかアプローチの仕方のヒントがもらえると嬉しい。
>>92 dateobj = new Date();
switch(dateobj.getHours()){
case 10:
trace("10時です。");
break;
case 11:
case 12:
case 13:
trace("11-13時です。");
break;
case 14:
trace("14時です。");
break;
}
>>91 1)ない
2)E4Xが標準だからそっち覚える。どうしてもxpathじゃなきゃまずいなら3.0使わずに2.0のmx.xpath.XPathAPIでどうぞ。
質問です 1フレーム目に var bgm = new Sound(); bgm.loadSound("file://D:/example.MP3" , true); と記述して、パブリッシュした物を開くとちゃんとexample.MP3が再生されてくれるのですが ウェブ上のホームページにアップロードしてこれを実行するとexample.MP3が再生してくれません ネット上のswfはローカルフォルダにあるファイルをロードできないってことなのでしょうか? 何とかしてロードできる方法があるとしたら教えて欲しいです 使ってるのはWindowsXPでFlash8です
>>93 怒られるかなと思っていたからすげー嬉しい
本当にありがとう!
ここから頑張ってみる
>>95 flashの前にパソコン勉強してこようね。
>>94 ものすごい勢いの回答ありがとうございます!
1)について補足としてお聞きしたのですが、
このようにイベントの終了まで待機させたい場合は
while(!eventEndFlag) {}
のようにするのでしょうか?
>99 何のイベント? ちなみにそれだと無限ループしちゃう イベント終了後に、待ってる処理を呼び出すんじゃダメなの?
ちなみに、ASで並行処理できるかは知らないw
102 :
95 :2007/11/21(水) 20:29:49 ID:etouH856
>>97 えっと、「file://」の記述が間違っているということなのか
ネット上のswfがローカルフォルダのMP3をロードできるわけない、ということなのか
Dドライブの中身なんて各PCで違うんだからそんなの作っても意味無いだろ、ということなのかわからないです
自分がやろうとしているのは、swfを再生させる前に予めMP3をローカルフォルダに用意させておいて
そのMP3をロードして音楽として使おうということなんです
ローカルフォルダにあるMP3をネット上のswfのSoundオブジェクトにロードする方法か、
ロードしなくてもそのMP3を再生する方法があるとしたら教えて欲しいです
お願いします
>>102 簡単な方法
swfと同じフォルダにmp3を置く
bgm.loadSound("example.MP3" , true); と書く
HPでは同じフォルダにswfとmp3ファイルを置く
>99 普通はCompleteイベントかなんかを飛ばして、 終了後の処理はそのイベントハンドラ内で行う。 Flashは基本的にシングルスレッドなので、 応答を待っている間ループさせてしまうと その間は何も処理できないよ。
皆さん返答ありがとうございます!
>>100 ファイルの読み込みイベントですね。
処理的には問題ないのですが、
java上がりの私には処理が途中分断されるのが気持ち悪くて。
>>105 なるほど。とても参考になりました。
イベント型のプログラミングになれるしかないですね。
107 :
95 :2007/11/22(木) 16:29:50 ID:zzR/7q+p
>>103 その方法だと、MP3ファイルもアップロードしなくちゃいけないですよね
具体的に例を挙げるなら、
とあるPCゲームの音楽を使用してFlashを作ったけど、その音楽をつけたままアップロードしたら著作権的に良くないから、
同じPCゲームを持っている人なら音楽付きで楽しめることができる
みたいなのを作りたいんです
次のレスはしばらく反応見てからにします
>>107 それならべつにmp3うpしなくてもいいじゃん。
自分の作ったswfをDLしてもらって、そのフォルダにユーザーの持ってる?
MP3をコピーしてもらえばいい。
いずれにしろ売っている楽曲の使用はまずいだろw
>>107 >>108 の方法が妥当だな。
DLしたswfをローカルで再生してもらって、指定したフォルダに指定したファイル名で
ユーザーがその曲を置くようにする。
だが、かなり面倒な気がする。そこまでしてその曲をユーザーが使う意味あんのか?
とにかく、いきなり任意の場所にあるローカルの曲を別サーバのswfが再生するとか
そんなウイルスみたいなマネは普通はできない。
Proxomitron使えば出来るけど、
>>108 の方法のほうがずっといいな
よく知らんけどAIRならローカルファイルアクセスできるから 再生も出来るんじゃないの?
AS2とAS3を一つのソースで上手く管理する方法はないでしょうか?
>>112 AS2とAS3はきちんと分ける。
たとえば、C++のソースとJavaのソースを分けるように。
AS2は捨てて新しい自分に生きる
>>113-114 やっぱり無理ですか・・・orz
>>115 モバイルFlashがAS3で書けるならいますぐ捨てたいのですが
最新のFlashLite3でも対応してないのであと3年は捨てられない・・・Adobeのアホー
AS2も3もやれば良いじゃん つーか1つの言語だけで食える仕事ってあるの?
一つの言語だけというよりAS2とAS3が一つのソースで管理できたらいろいろ楽になるんで聞いてみたんですが みなさんありがとうございます
>>112 クラスを一切使わずFlashのAPIは関数でラッピングすればおk
120 :
Now_loading...774KB :2007/11/24(土) 18:23:26 ID:4gv8eKD5
ストリーミング再生について質問です。 loadSoundを使って外部mp3を読み込むと、何故か通常より"音程が高く"再生されます。 attachSoundの場合はそのようなことは起こりませんでした。また、mp3ファイル側に原因 があるのかと思い、様々なmp3で試してみましたが、同様の現象がおきました。 原因が分かる方、アドバイスくださると幸いです。
AS2での質問です。 外部からLoadVarsを使い、csvを呼び出してsplitでそれを分割したのですが それをonDataの外で使いたいのですがどうすればいいのでしょうか? var CSVLoad=new LoadVars(); CSVLoad.onData=function(csv:String){ // この中ではなく } CSVLoad(a.csv); //ここで使いたいのですが returnも使ってみたのですがうまくいきません すいませんがどなたかお願いします。
>>121 分割して格納する配列を
var CSVLoad=new LoadVars();
の下あたり(onDataの外)で定義しとけばいんじゃね。
123 :
121 :2007/11/25(日) 17:22:32 ID:ICIWbaG3
何度も申し訳ありません。 var CSVLoad=new LoadVars(); var cs_split:Array=***.split(",");//追加 CSVLoad.onData=function(csv:String){ } CSVLoad.load("a.csv"); こういうことでしょうか? traceで結果を見てみてもundefinedと表示されてしまうのですが 何度もスイマセン。
>>123 var CSVLoad=new LoadVars();
var cs_split:Array
CSVLoad.onData=function(csv:String){
cs_split = csv.split(",");
}
CSVLoad.load("a.csv");
こういうことじゃないかな?
>>120 私のところではloadSound()で読み込んでて問題出てないですよ。
MX2004→8で同じロジックで動かしてますがどちらも同じです。
Flashが読み込めるMP3の範囲からはずれてると倍速早送りみたいな
音で再生されるんで、それのことかな?
Flashが読み込めるのは
ビットレートが8/16/20/24/32/48/56/64/80/112/128/160(kbps)のCBR(固定ビットレート)で、
サンプリングレートが11025/22050/44100(Hz)
のMP3で、そこから外れるとダメです。
CBRでなく、ABRやVBRもダメ。
まずそのあたりから確認を。
as3で、ダイナミックテキストにアンチエイリアスをかける方法を ご存じの方はいませんか? as2だと、ソース付で解説しているサイトはあるんですが、 そのソースのままでは動きませんでした・・。
>>122 さん
>>124 さん、ありがとうございました。
別のfunctionなどでくくってからでないと使えないのですね。
おかげで動くようになりました。
128 :
Now_loading...774KB :2007/11/27(火) 19:05:55 ID:3eRqpKgE
初歩的ですが質問させていただきます。 ボタンを押したときに実行するASを、ボタン自体に書くのではなく、出来るだけ1箇所のフレームにまとめて 記述したいのですが、そのASを書いたフレームの時点では、まだボタンそのものが存在していない場合、 そのASは無効になりますよね・・・。一箇所にまとめて書きたい場合はどうすればよいのでしょうか? 分かりにくい日本語で申し訳ありません。
129 :
128 :2007/11/27(火) 19:08:52 ID:3eRqpKgE
上記の例を挙げさせていただきます。 _root.my_button.onRelease = function() { trace("pushed"); }; を、ルートの1フレーム目に記述したのですが、「my_button」はまだこの時点では 存在していないのです。(2フレーム以降にある) この場合どうすれば良いのかということです。スレ汚しすみません。
>129 この場合、すべてを1フレーム(1ファイル)で済ますのは無理 長くなりすぎて作業効率悪くなるんじゃん? ・クラスファイルを作ってmcにリンケージプロパティで関連付ける //btnAct.as class btnAct extends MovieClip { function onPress() { trace("pushed"); }} ・mcのフレームに、_rootに書いた押す動作を呼ぶASを書く //_root function btnAct(tar) { tar.onPress=function(){ trace("pushed"); }} //_root.mc:frame1 _parent.btnAct(this); ・mcのループやonEnterFrameでmy_buttonが存在するまで毎フレームチェックする
>129 楽なのは、ボタンを非表示にしておけば?
132 :
Now_loading...774KB :2007/11/27(火) 21:14:08 ID:keuGlUA9
質問させていただきます。 Flashの画質を初めから中の状態で表示させたいのですが 何か方法はありますか?
>>132 _quality = "MEDIUM";
>128 FlexならcreationCompleteイベントを拾うか childrenCreatedをオーバーライドして そこでイベントリスナを張る
135 :
:2007/11/27(火) 23:00:27 ID:1tVlJi1o
>>133 ありがとうございます!
すみませんが もうひとつ質問させていただきます。
stopAll(); というプログラムでストリーミングは止められたのですが、
イベントを止めるプログラムはありますか?
ゲームで6秒くらいの繰り返しの音を使ってます。クリアしたときに
その音を止めたいのですが、イベント形式なので止められないのですが・・・。
質問です!
AS2から採用されたBitMapImageクラスを使って着せ替えswfを作ったんですが、
これでお好みの組み合わせが出来た所で、そのオブジェクトをjpegなりに書き出して、ローカルに保存するか、mailに添付させたいのですが、どうやってやれば良いか良くわかりません。
自分なりに調べてみた所、
下のサイトに良さそうなコードが載っています。
ttp://www.flash-db.com/Tutorials/snapshot/snapshot.php?page=2 ただこれを読むとピクセル一つ一つのデータを調べて、イメージを構成すると言うかなり力ずくなやり方のようで、
CPUにも負担が多いのでできればこのやり方は避けたいのですが、
何か他にスマートな方法などは無いでしょうか?
それともAS3から新たに追加された機能などで簡単に出来るようになっているのならAS3への移行も考えるのですが…
ActionScript使いの達人の物凄い勢いの解答をぜひ、おながいします。
137 :
136 :2007/11/28(水) 11:13:35 ID:SBkg8gYY
>>136 BitMapDataクラスの間違いです。
orz...
スンマソン
>>136 Flash単体じゃ今のところ無理だと思う。
外部プログラムと連携させれば可能。
139 :
136 :2007/11/28(水) 12:00:01 ID:SBkg8gYY
>>138 なるほど、やっぱりそうですか。
上の参考に載せたサイトもPHPと連携させてますが、
そのプロセスがかなりCPU負荷が高いみたいで、
もう少し実践的な例などあれば非常に有り難いのですが…
サンプラーのサンプルってないですかね。。
>>139 オンラインでの話だろうけど念のため言っておくとAIRでcorelibクラス使えば可能。
AIRほしいよAIR
>>136 AS3ならByteArray使えばもっとスマートにできる。PHPとの連携は必要だけど。
「AS3 画像として開く」でぐぐると、pngでの例が載ってる(jpegも同様)
Flash8でおきた変な現象 var s = "15.01"; var a:Number = parseFloat(s); var b:Number = a + 1.0; var c:Number = 16.01; trace(c==b); trace(c>b); trace(c-b); なぜかcの方が大きい値になる。バグか?
いたって正常だが? まさか、ここで浮動小数点形式の解説からしないといけないんですか。
>>145 では値が1大きい以下の場合では結果が異なる
理由を教えてください。
var s = "16.01";
var a:Number = parseFloat(s);
var b:Number = a + 1.0;
var c:Number = 17.01;
trace(c==b); //true
trace(c>b); //false
trace(b-c); //0
>>147 じゃあ等価かどうか調べるにはtoString()
で一度文字列とかに変換して比較しないとい
けないんですか。
>>148 浮動小数点は普通、等価演算は行わない。
計算機工学の教科書でも買って読んだ方がいいよ。
>>148 どうしても比較したい場合は、自分で精度を決めて、以下のようにしろ。
var precision = 0.0001
trace((a - b) < precision);
>>150 なるほど。toString()で文字列に変換する場合は誤差は無視
されるんですね。
数値の有効精度や小数点数を扱うときは気をつけます。
Flexについての質問なんですが、2列あるDataGridコンポーネントで、 両方のitemRendererにComboBoxを指定して、 ある行の1列目の値を変えると、 その行の2列目の値のセットが変わる というものを実現しようとしています。 1列目のComboBoxのchangeイベントにて、その行の2列目のデータを入れ替えるようにしたんですが データ上では入れ替わったのに、表示は元のまま変化しません。 2列目のComboBoxのdataChangeイベントを使って何とかするのかと思ったのですが そのイベント自体発生していないようなのです。 (itemRendererであるComboBoxまでイベントがこない??) 何か考え方が抜けているのか、やり方がまずいのか、 どなたかご存知の方教えていただきたいです。
153 :
Now_loading...774KB :2007/11/28(水) 23:05:37 ID:huy/9hDu
ローディングバーの演出で、一枚の画像をタイル上に100分割して 読み込みに沿って、ランダム(順番に開いていくのではなく)にそのタイルが、 徐々に開いていくというような 演出をさせたいのですが、 どうすればいいのか、ヒントをお教えいただけますでしょうか。 また、上記のような演出をしているサイトがあれば、ご紹介頂けないでしょうか。 参考にしたいとおもっております。(近しい演出でも可です。) どなたか、ご存知であれば、教えてくださると助かります。
D:\swf\samples\VideoJukebox\VideoJukebox.as(151): col: 46 エラー: 型が見つからないか、コンパイル時定数ではありません : SliderEvent。 private function volumeChangeHandler(event:SliderEvent):void { ^ 助けてください><
>>153 0〜99の数字が入った配列作って最初にシャッフルして、
ローディング中にその順番通りに開いていく
>>152 update()してないとか
>>154 importしてないとか、AS2と3間違えてるとか
157 :
Now_loading...774KB :2007/11/29(木) 23:37:13 ID:wYBBp9FN
153です。155さんありがとうございます。 初歩的なところで、申し訳ないのですが、アクションスクリプトの 書き方のヒントおよびサンプルスクリプトをお教え願えないでしょうか? また、上記のような演出(近しいもの)を施しているサイトなどありましたら、 演出及び製作時に参考にしたいと思いますので、教えていただければ幸いです。
>>151 同じく初心者ですが、数列内の順序を入れ替えるシャッフルの式を教えて頂けないでしょうか?
Randomを使って乱数を発生させるのは分かるのですが
同じ要素が出ないようにする仕組が分かりません。
159 :
158 :2007/11/29(木) 23:44:17 ID:9STEAcH0
>158 ArrayCollectionかなんかに入れて、 当たったやつを抜いてけばいいんでねが?
お教え頂きたいのですが ローカルの日付けを取得して 2007/10/29 という数値を出すことが出来ました。 これを月、日にわけて数値を取り出したいのですがどうすればいいのでしょうか? evalかなと思いいろいろやってみているのですが上手くいきません。 ぜひお教えくださいです
162 :
152 :2007/11/30(金) 00:49:05 ID:61e9uXST
ですが、dataProviderの対象データをArrayCollectionにしたり
Bindableなクラスにしまくったら何とかいけました。
ArrayCollectionのメソッド(忘れた)やDataGridのexcuteBindingを使えば
データを変えずに出来そうなんですが…
>>156 update()って何クラスのメソッドでしょう?
>162 List系だったらinvalidateList()で更新されるね。 はじめのころ、これに気がつかないで dataProviderを再代入することで 更新させてた時期が僕にもありました
165 :
158 :2007/11/30(金) 01:36:44 ID:Z5qIcHI3
var list:Array = []; for(var i:Number=0;i<100;i++){ list.push(i); }; trace( list ); list.sort( function(){return Math.round(Math.random()*2-1)} ); trace( list ); こういうのはダメ?
それ偏るんだよ。 100位数があれば、それなりに散らばるんだけどあまりお勧めの方法じゃない。
168 :
155 :2007/11/30(金) 01:44:59 ID:I6l/UWl/
>>158 ASではspliceで元の配列を削っていくと分かりやすい
master = new Array(); // 元となる配列
order = new Array(); // ランダムな配列
for(i=0; i<100; i++)
master.push(i);
while(master.length) {
idx = Math.floor( Math.random()*master.length );
order.push( master.splice(idx, 1) );
}
trace(order); // 90,35,48,...,53,70,72
// あとはorderの値を順に使うことでランダムな順番に
for(i=0; i<100; i++)
bar_tiles[ order[i] ]._visible = true;
100タイル準備するより1枚のBitmapと10×10のbitmapでpixeldisolveしたもんを マスクに使って描きこむ方が楽だと思うよ。
170 :
158 :2007/11/30(金) 02:39:50 ID:Z5qIcHI3
おおみなさん、 ほんとにすごい勢いで答えてくれて感激です! 有り難うございました!!m(_ _)m
171 :
Now_loading...774KB :2007/11/30(金) 03:12:59 ID:32S6aFb2
153です。 168さんありがとうございます。 参考スクリプトを元に試行錯誤してみます。 とりいそぎお礼までに。 169さん、具体的には、どういう処理なのでしょう。初心者がゆえに、 イメージがみえておりません。ご指南いただけますでしょうか。
172 :
Now_loading...774KB :2007/12/01(土) 20:00:23 ID:dTINUaWs
153です。 155=168さんの方法論でいろいろ試しています。 配列にいれて、シャッフルして、 ランダムに削っていく方法(概念)はわかってきたのですが、 これを実際のローディングと結び付けるにはどうすればいいのでしょうか? たとえば、50%読み込み時には、ランダムに開いていった状態で、 約半分開いている状態にしたいとおもっています。 そして、100%読み込み時には、すべて開いている状態になります。 なにぶん初心者で申し訳ないのですが、 ご教示お願いいたします。
>>172 よくわからずに横槍いれるけど、
>>これを実際のローディングと結び付けるにはどうすればいいのでしょうか?
このブロードバンドの時代にローディングに凝るってのはどうなの?
ファイルサイズによってはほとんど無意味だとおもうけどな。
>>172 もしランダムでなく順番に開くことすらできないならそこからやってね
addEventListener(Event.ENTER_FRAME, mainLoop ); の中にURLLoader.load(URLRequest)を入れて(常に値が変わっていく)テキストファイルを 読み込んでいるのですが、ブラウザの構成ファイルを見ると膨大なテキスト ファイルがたまっているようです。 読み込んだテキストファイルを明示的に解放することはできないでしょうか? 説明下手ですが、どなたかアドバイスをよろしくお願いします。
そらブラウザのキャッシュ機能だからどうにもなんないわな
177 :
Now_loading...774KB :2007/12/02(日) 00:31:11 ID:PjurWfWg
153です。 173さん、こんにちわ。 一応、かなり大容量のムービデータを読み込むことなります。 ユーザに視覚的にあきさせないロジックを考えております。
AS2.0です。いつもお世話になってます。
ttp://theflashblog.com/?p=42 この様な水の波紋エフェクトを使いたいのですが、
具体的にどの様な処理をすればいいか見当がつきません。
DisplacementMapFilterを使うと言うとこまでは判ったのですが。。
179 :
Now_loading...774KB :2007/12/03(月) 22:54:36 ID:jL7mexpS
プリローダに関して わたしも便乗させてください。 1枚の画像からモザイクがジョジョに外れていくアニメーションを ローディングとして、連動させたいのですが、 どういうふうに記述すればいいでしょうか? 初歩的な質問で、意味が通じないかもしれませんが、 よろしくおねがいします。。
はじめまして。 ただいま大学の課題制作でサーバーに変数を保存してセーブ可能な育成ゲームを作っています。 そこで本当に初歩的な問題かもしれませんが、どうしてもわからないので質問させていただきます。 外部にテキストデータで text1=0 text2=0 text3=0 という変数を text1=0&text2=0&text3=0 というテキスト(loadval1.txt)←ファイル名 で用意しています。 これをボタンインスタンスで読み込むようにしています。 ボタンインスタンスのスクリプトは on(press){ this.loadVariables("loadval1.txt"); } ↑これです。 これでちゃんと読み込まれているのですが、問題はtext1=0の「0」が数字ではなく文字として認識されているらしいということです。 読み込んだ変数に_root.text1 += 1;と1を足しても 「01111」と後に1が付け足されている状態で、足し算ができません。 どうすれば読み込んだ変数を数値として認識できるでしょうか? あと、数値として読み込めたとしたらどのようなスクリプトで足し算すればいいでしょうか? よろしければお聞かせください。
>>180 parseIntとかparseFloat使って読み込んだのを数値に変えれば?
アニメーションの中で雨を降らせるASを書いたんですが フレームが終わっても雨が再生されてしまいます。 止める方法がわかりません。 スクリプトは某FLASHサイトで公開されてるものをお借りしました。 環境はXPのFLASH MX2004です。 スクリプト falling_speed = null; num = 50; palet_X = 490; palet_Y = 270; make_instance(num, palet_X, palet_Y); function make_instance (num, palet_X, palet_Y) { for (i=0; i<num; i++) { // 複製するインスタンスの名前を決める sn = "rain_" add i; // ↑で決めた名前でインスタンスの複製 duplicateMovieClip ("rain", sn, i); // 複製したインスタンスの位置をパレット内にランダムで配置 var x = Math.floor(Math.random()*(palet_X+1)); var y = Math.floor(Math.random()*(palet_Y+1)); // 複製したインスタンスの位置を決定 setProperty (sn, _x, x); setProperty (sn, _y, y); } }
>>182 attachやduplicateされた深度がプラスのMCはオーサリング時のキーフレームよりも
上の階層にいるので、配置されたMCのライムライン全体に延々存在しつづける。
だからremoveMovieClipとかで消さなくちゃいかんのじゃ。
一番楽そうな方法は、雨降り用のMCを配置してそこに雨を降らす。
雨がいらなくなったらそのMCをタイムラインから削除しとくことかのう。
故あってAS2版のPV3Dを使うことになっているんですが、 MovieAssetMaterialのanimatedが動いてくれません。。。 こんな感じ指定しています。 var material:MovieAssetMaterial=new MovieAssetMaterial(materialName,true); material.oneSide=false; material.animated=true; var plane:Plane=new Plane(material,edgeWidth,edgeHeight,seg,seg); 誰か分かる人いませんでしょうか(´・ω・`)
原因わかりました。。。 そもそもPV3DのAS2版ではanimatedをtrueにしてもupdateBitmapを読込むところが書いてありません!! なので適当なMcを渡してonEnterFrameで強引に呼び出しを掛けたところ、 なんとか正常に動作するようになりました。 スレ汚し失礼致しました。
186 :
Now_loading...774KB :2007/12/05(水) 01:00:02 ID:n7UB1C5r
187 :
Now_loading...774KB :2007/12/05(水) 13:07:40 ID:MdRnBIAD
Flash8 MacOSX10.4 this.bgmA = new Sound(); this.bgmA.loadSound("BGM/A.mp3"); this.bgmB = new Sound(); this.bgmB.loadSound("BGM/B.mp3"); this.bgmC = new Sound(); this.bgmC.loadSound("BGM/C.mp3"); this.bgmB.start(0,999); とした時にどのサウンドオブジェクトが再生中か調べることは出来ないでしょうか。 再生時に、bgmCheck = "bgmB"; とか書いといてそれで判断するしかありませんか?
Flex2を使用しています。 removeChildなどでボタンなどのオブジェクトが既に消されているかどうかの判断はどのようにするのが良いのでしょうか? 今は (''+オブジェクトのID).indexOf('.')+1-0 の様にして判断していますが、何か問題があるのではないかと悩んでいます。 何か他に方法は無いでしょうか?
>>187 自前でstartとstopとonSoundCompleteのときにフラグ立てるか
またはpositionを常に監視して数字が動いていれば再生中とみるとか
>>186 AS3で書いてあるソースをそのまま使いたいならAS3、つまりCS3でしょ。
ソースを理解してAS2に書き直すだけの力があるならAS2でがんばってやってみる。
>>188 Flexは使ったことないけど、removeChildは表示リストから除外するんじゃなかったっけ。
AS3ならcontains () あたりで判定すると思う。
191 :
Now_loading...774KB :2007/12/06(木) 12:23:51 ID:CTqXNWir
普通for in構文は全てを列挙するだけで、順番については保証しない
193 :
191 :2007/12/06(木) 12:48:49 ID:CTqXNWir
>192 ありがとうございました!
194 :
Now_loading...774KB :2007/12/06(木) 22:16:35 ID:NX71/vIg
お初にお目に掛かります.AS3でどうしても不明な事があり,ここにたどり着きました. プログラムを初めて1週間程度になりますが,本日はクラスの継承について学んでおりました. そこで,コンストラクタの継承についてお聞きしたいと思っております. まずは親クラスEvent1のコンストラクタとメソッズです. public function Event1(mc:MovieClip){ my_mc = mc; my_mc.buttonMode = true; my_mc.addEventListener(MouseEvent.CLICK, onClick); } public function onClick(event:MouseEvent):void{ trace("クリクリッ"); } 次に子クラスEvent4です. Public class Event4 extends Event1 { var my_mc4:MovieClip; //コンストラクタ public function Event4(mc4:MovieClip){ my_mc4 = mc4; my_mc4.buttonMode = true; my_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver); } public function onOver(event:MouseEvent):void{ trace("4444"); } これらを実行すると"Event1にデフォルトコンストラクタがありません"とエラーがでます. ためしにEvent1のコンストラクタを空っぽにすると動くのですが,親のコンストラクタに処理内容を記述した 状態で子は独自のコンストラクタで処理するということはできないのでしょうか.
195 :
188 :2007/12/06(木) 22:52:00 ID:5WrwnUKz
>>190 有難うございます。containsに置き換えて正常に動作しています。
>表示リストから除外
はい。消すというかスペース含めて非表示にする(CSSのdisplay:noneと同じ感じ)ようです。
もう一つの質問スレの進行がめちゃくちゃ遅いっぽいのでこちらで再質問させていただきます。 AS2でWebからJPEGファイルを大量に読み込んでパラパラアニメを表示するソフトを作っています。 JPEGファイルの一覧はXMLファイルから与えられ、個数は可変です。 現在は、1フレーム目のASが実行された瞬間に、まず再生を止めて、 XMLファイル、JPEGファイルを読み、ムービークリップをどんどん重ねていってます。 JPEGファイルを読み込み終わった後、再生開始、2フレーム目は1フレーム目に戻るだけの処理を書いています。 1フレーム目に戻ったときに、1フレーム目のフラグを見て、読み込み終了したことがわかるので、 表示用インデックス(何枚目のムービークリップを表示するか)をインクリメントして、 あるムービークリップ以外のムービークリップの_visibleをfalseにしています。 ですが、この方法だと、ムービークリップが100枚くらい重なることになり、いくら_visibleを falseにしたところで、枚数が増えるとどんどん遅くなっていってしまいます。 JPEGのデータだけロードしておいて、1枚のMCの表示内容をどんどん切り替える…みたいな 先にキャッシングを行っておくような処理はできないものでしょうか?
>>196 別にできるけど?
MovieClipLoader使え。
>>196 jpgを動的に読み込んでパラパラアニメって、、、あり得ない仕様だなw
スライドショーならわかるけど。
>>197 MCL使った場合、HTTPレスポンスが返って来るまで時間がかかったりすると表示されない時間が出てきそうですが、
1度読み込んでおけばローカルにキャッシュされて大丈夫なのかな。試してみます。
>>198 動的、というか、検索条件にしたがっていろんな高速のスライドショーを行いたい、という感じです。
リアルタイムに次に読むJPEGが決まるのではなく、検索クエリごとにJPEGの配列が決まるというか、なんというか。
>>199 具体的にどういう事をやりたいのかが見えないので何ともコメントできんがなw
>>200 イメージとしては、Javaのアプレットで似たようなものつくるとしたら、
まずはじめにメモリ上にとりあえずすべてのJPEGファイルをImageクラスとしてロード。
(多少時間がかかる)
経過時間とともにCanvas上に表示するImageを切り替え。(ここは一瞬)
flashムービー再生開始時にJPEGファイルを全て読んでメモリ上にキャッシュしておいて
(オブジェクトとして持っておいて)、パラパラ漫画として表示するときはそれを切り替えるだけにしたいんですよ。
質問があります。環境はFlash8 WindowsXPです ローカルにあるswfで、パブリッシュ設定でローカルファイルのみにアクセスにしていると ウェブ上のtxtを参照する時にセキュリティ設定の警告が出てしまい、 設定をネットワークのみにアクセスにするとテスト以外の時にtxtが読み込まれてくれないのですが どうしたら読み込めるようにできるでしょうか? フラッシュのヘルプを漁ったら、セキュリティサンドボックスとかカスタムポリシーファイルとか出てきたんですけど よくわからなくて・・・ どなたかお願いします
>>201 複数ファイルの読み込み待ちができないってこと?
面倒だからコード書いとく
//読み込み一斉開始ループ
for(i=0; i<100; i++){
〜.onLoad = makeCallback(i);
};
function makeCallback(n){ return function(){
_root.flags[n]=1;
for(i=99; i>=0 && _root.flags[i]==1; i--)
if(i==0) // 全部読み込まれていたら
parapara_anime_start();
}; }
>>203 ありがとうございます。
今は読み終わったMCの数と読み込むべきMCの数を比較して読み込み待ちはできるようになっているんです。
で、それを表示するときなんですよ...
一番の原因は、MCを100枚とか重ねまくることによる重さ、なんですよね。
パラパラアニメの枚数に従って、ASから枚数分のキーフレームだけ生成して、
個別にMCを置いていって再生すれば速くはなるんでしょうが…
質問を言い換えると、ローカルにJPEGファイルをMCとして100個あらかじめ読み込んでおいて、
その100個のMCをフレーム上に配置した1個のMCの中身としてどんどん置き換えていけないか?ということなんです。
100枚MC重ねて_visibleのtrue/falseを切り替える、だと遅くて遅くて…
タイムラインでも参照を代入でもなんでもいいから1枚に出来ないかな、ということなんですが…
>>204 _visibleでなくjpgMCのx,y座標を変えてあげるとか。
表示領域外に表示しないものは全部おいといて、表示する奴だけ表示領域に移動。
次のを表示する前に、前のは表示領域外に移動させとく。
つか、表示エリアのMCの参照を切り替えるとかでできないかな。
なんかようわからんがシンプルにフレームアクションじゃ駄目なのかえ?
207 :
Now_loading...774KB :2007/12/08(土) 11:57:22 ID:dLK604IH
AS2.0ですが、fla内のスクリプトを_rootの1フレームに全ての書くのが一番理想的なのでしょうか 今は初期設定等を_rootの1フレーム目、menu_mcの中のbotton_mcの挙動をmenu_mcの1フレーム目といった形で それぞれのムービークリップの領域で数箇所に纏めているのですが もし仕事でチーム組んでやる場合のメンテナンス製とか、こういった分散をすると処理自体が遅くなったりもするのでしょうか?
>>207 そのスクリプトをasに書いて「#include "〜.as"」と読み込ませればメンテナンスしやすい
中はクラスじゃなくてもいいし
flaは基本的にフォントの入ってるデザイナしか触らない
理想的かどうかは知らないけど重くもないし良かったと思ってる
ちなみに、そのswfファイルが別のswfファイルから読み込まれた場合、そこは_rootじゃなくなるから、 なるべく_rootを使わない方が良いよ。 ていうか、flaファイル内の一番上にくるフレームが必ずしも_rootとだとは思わない方がいい。
>>205 _x,_yの座標変えたら超速くなりました!
ほんとにありがとうございます。
参照切り替えは過去にやってみたんですが、どうもうまくいかなかったんです。
(AS/Flashの感覚がつかめてないせいかも)
とりあえずは移動させることで解決しました。ありがとうございました。
212 :
202 :2007/12/08(土) 17:28:04 ID:UckAayqx
自己解決しました 無駄レス失礼しました
>>207 コードを書く場所によって動きが遅くなると言う事はまずないので安心しとくれ。
どれが最適か、というのはそのチームや会社のルールがあるだろうから、それに従えばOK。
あまり気にしない。やたら気にする奴は大抵使えないから相手にしなければOK。
>>210 解決したようだけど、Javaでビットマップデータの扱いに慣れているなら、
画像を読み込んだ後に、BitmapDataに画像のデータをdrawしてキャッシュ
しておいて、それを逐次表示用のMC(BitmapData)にdrawしてく方が簡単かもね。
>>194 public function Event4(mc4:MovieClip){
my_mc4 = mc4;
super(mc4);
みたいに引数付きでコンストラクタを呼んであげるといいんじゃないかな?
>>214 おお、BitmapDataなんてクラスあるんですね。
これで何でもできそうです。入門書にはあまり書いてない範囲なので、見つけられずにいました…
もともとJavaとかのスタンドアロンなプログラマーなんで、タイムラインいらねえええええとか思ってましたww
これで普通のスタンドアロン的な書き方ができそうなので、助かりました。ありがとうございました。
やらしいので却下
>>217 tcpdump、逆コンパイラ、ブラウザごとデバッガに放り込む。
221 :
217 :2007/12/08(土) 22:09:09 ID:T42Rp7Bu
222 :
Now_loading...774KB :2007/12/09(日) 14:32:15 ID:bDbE9MiW
MovieClip「pic」に画像を読み込んでアルファを0にした後、 フェードインさせたいんですが、 pic.onEnterFrameが一度しか実行されません。 何が原因なんでしょうか? よろしくお願いします。 display(); function display() { //画像読込先のMCを空にする pic.unloadMovie(); //画像読み込み pic.loadMovie("img.png"); pic.forceSmoothing = true; //フェードイン呼び出し fadeIn(); } function fadeIn() { pic._alpha = 0; pic.onEnterFrame = function() { _alpha += (100 - _alpha) * 0.2; if (_alpha >= 98) { _alpha = 100; onEnterFrame = null; } }; }
>>222 本当に一度しか実行されてないのか、trace()で確認した?
そもそもロード完了をチェックせずにフェードインしようとしてないか?
そしてonEnterFrameを消すならdeleteしたほうがいい。
あと、最初にunloadする意味あるの?
>>222 その数式で何回enterFrameが動くと思う?
225 :
222 :2007/12/09(日) 15:07:03 ID:bDbE9MiW
>>223 traceするとonEnterFrameが一度だけ実行されてます。
picにロードした画像ではなくpicのalphaをいじるのも画像のロード完了待たないといけないんでしょうか?
画像をロードしたら上書きされるんですね。
unloadいらないです。
>>224 alphaが0から100になるまで数回実行されると考えてたんですが、
どこが間違ってるんでしょう?
>>225 どういうtraceしてんだよw
if文の前の_alphaの値は?
227 :
222 :2007/12/09(日) 15:20:29 ID:bDbE9MiW
>>226 ↓を実行すると100がひとつだけ出力されます。
display();
function display()
{
//画像読み込み
pic.loadMovie("img.png");
pic.forceSmoothing = true;
//フェードイン呼び出し
fadeIn();
}
function fadeIn()
{
pic._alpha = 0;
pic.onEnterFrame = function()
{
trace(_alpha)
_alpha += 5;
if (_alpha >= 95)
{
_alpha = 100;
delete onEnterFrame;
}
};
}
228 :
222 :2007/12/09(日) 15:23:27 ID:bDbE9MiW
ちなみに pic.onEnterFrame = function() { trace("1:" + _alpha); _alpha += 5; trace("2:" + _alpha); とやると 1:100 2:104.6875 とでます。
>>228 そのtraceでthis._alphaを表示してみそ
230 :
222 :2007/12/09(日) 15:33:50 ID:bDbE9MiW
>>229 別の_alphaを参照してたんですね。
でも1bと2bはどこの_alphaになるんでしょうか?
onEnterFrameはまだ一回しか実行されないです。
function fadeIn()
{
trace("0:"+pic)
pic._alpha = 0;
pic.onEnterFrame = function()
{
trace("1a:" + this._alpha);
trace("1b:" + _alpha);
this._alpha += 5;
trace("2a:" + this._alpha);
trace("2b:" + _alpha);
if (this._alpha >= 95)
{
this._alpha = 100;
delete onEnterFrame;
}
};
}
出力:
0:_level0.pic
1a:0
1b:100
2a:4.6875
2b:100
>>225 勘違いしているようだが、picに外部画像をロードしたら
pic=外部画像と考えていい。
まずは、ロードが完了するまで待て。
デザインメインのWebデザイナーです。 しばらくFlash離れていたのですが、また勉強再開したいと思ってます。 AS1.0のころは、スクリプトでのアニメーションから、 サイト丸ごとのナビゲーション位まで作れてたのですが、 クラスが出てきたあたりでデザイン専業になってFlashから離れてしまいました。 今から勉強するならAS2.0ですか?AS3.0ですか? 先鋭的な技術が必要ないプロジェクトなら、2.0あれば十分な気がするし、 3.0勉強するにしても、2.0を通る必要があるような気がします。 ソフトはFlash8持っていますが、CS3が必要なら購入するのでそこは問題ないです。 また、それぞれ2.0or3.0を勉強するのに現時点で オススメの書籍なんか(出来れば日本語)あったら教えてください。よろしくお願いします。
ナビゲーションと言っても結構単純な気がするから AS2.0でなくてもまずはプログラムが構造化されてるASメインのFlashかな プログラム自体に慣れてからクラスを触った方がいいと思う 形だけ覚えても意味無いからねえ
234 :
232 :2007/12/09(日) 21:55:18 ID:hMoPTKTD
>>233 なるほどー。やっぱり順番にやっていったほうがいいですかね。
Flash8を購入し、今日から始めてみたのですが、どうもFlash内蔵のASエディタは 使い勝手が良くないような気がします。 AS用の良いエディタというのはありませんか? as2editというのは見つけたのですが、これ以外にもありましたら 教えていただけませんか?
vim
>>236 ありがとうございます。検索したところ、ドキュメントがいくつか出てきました。
もっと調べてみたいと思います。
ではこれも書いておかないと。 Emacs
>>238 レスどうもです。Windows向けのクローンをあたってみます。
質問。アクションスクリプトについて 場違いなら言ってほしい。 aという変数の中身によって4種類の結果に飛べるようなスクリプトを考えてるんだけど 0〜20までaの値があるとして if(0<=a<=5){} else if(6<=a<=10){… ってな感じで4つのif文を書いていくので正解?
>>240 0〜19までの整数を5で割って小数点を切り捨てれば良いのでは?
その数値をラベルとして飛ぶとすると、
gotoAndPlay("a"+Math.floor(a/5));
これで、a0〜a3まで飛ぶよ。
242 :
Now_loading...774KB :2007/12/10(月) 16:13:13 ID:GV2qrlAN
>>241 すげえwwww
ありがとうございました。
シンボルごとに記述したASをそのまま文法チェックできるようなエディタって ないですよね?
日本語でおk。
FLASH MXでおみくじを作ろうとしています 「今日の運勢は大吉です。待ち人あらわれるでしょう。 今日は大凶です。おとなしく家に〜〜 あなたの運勢は中吉で〜〜 (以下いろいろなパターンで100行くらい続く)」 と書かれたテキストファイルがあるので、それを読み込んで全部で何行あるのかを算出し、その数から乱数で1行を選んでフィールドに表示したいと思っています 自分では改行コードをfor文とindexOf()で-1が出るまで探して合計行数を数えようかなどと考えているのですが、なにかもっと簡単にできる方法はないものでしょうか?
>>245 var my_str = "1st\n2nd\n3rd";
var my_array = my_str.split("\n");
trace (my_array.length);
splitで区切って、lengthで数えればいいと思ふ
ニコニコプレーヤーに実装されている右クリックでの新しいウインドウで開くはどうすればいいでしょうか
>>246 どうもありがとうございます
自分ではsliceの使い方でものすごく遠回りなことをしていたようです
配列に納めてしまえばランダムに引き出すのも簡単にできるわけですね
ところで配列の中身が100や200、果ては1000や10000になってしまうと処理に負荷や時間がかかってしまうんでしょうか?
余計な心配でしょうかw
250 :
Now_loading...774KB :2007/12/12(水) 12:33:59 ID:ZJlGBkOA
NetConnection オブジェクトは グローバル変数にしないと NetConnection.callが実行されないみたいなんだけど これってどこかに書いてある?
251 :
Now_loading...774KB :2007/12/13(木) 12:09:53 ID:3fR61co+
Flex2でAS3.0いじってるんだけど Flash9等でMovieClipの中にMovieClip作るみたくしたいんだが どうすればいいの? いったんMovieClip内のMovieClipにあたるものをいったんswfで書き出して そのswfを呼んでみたりしたんだが表示されんかった。
252 :
251 :2007/12/13(木) 13:27:36 ID:3fR61co+
なぜpackage内のSpriteを継承したpublic classのコンストラクタが勝手に動く(勝手に作られる?)のかよくわからんのだが
それはさておき、
>>251 の続きで
Spriteを継承したクラスをprivateでもうひとつ作ってその中で色々描画したものをメインのpublic classのほうで
作ればMovieClipの中にMovieClipを作るような形になるのでは??と思い色々調べて見たら
http://d.hatena.ne.jp/nemu90kWw/20051102/p1 ここのサイトの
>実行すると三角片が円形に32個配置される。
のとこのソースが俺のイメージ通りのことをやってた。
ワクワクしながらソースをコピペしてコンパイルしてみるが
>private 属性はクラスプロパティの定義でのみ使用できます。
なんてエラーが出てコンパイルできないんだけど。
まじ意味不明になってきた。
誰か助けてちょ。
253 :
251 :2007/12/13(木) 15:14:21 ID:3fR61co+
■stageとは stageは全てのDisplayObjectを保持するオブジェクトです。 ■DisplayObjectとは DisplayObject は、スプライト、ムービークリップ、ボタン、テキストフィールド といったFlash画面上で配置できるインスタンスの基となるクラスで、 座標や角度や拡大縮小などの、配置に関する情報などを管理しています。 てことはStageのインスタンスを作らなければ画面に何も描画されんと いうことだべ?? Stageのインスタンス作った覚えないのに画面に描画されるってどういうこと?
255 :
251 :2007/12/13(木) 18:01:44 ID:3fR61co+
>>254 そんな硬いこと言わずに教えてくれYO!!
>>253 Stageとその下のDisplayObjectはswfムービー書き出したときに自動で作られる。
>>252 クラスファイルのコードをタイムラインにコピペしてんじゃね?
257 :
sage :2007/12/13(木) 20:15:15 ID:smX/p40r
flvplaybackでflvを再生した後、特定のURLにジャンプさせるには どうしたらいいですか?
258 :
257 :2007/12/13(木) 20:16:37 ID:smX/p40r
すみません。まちがえました。
261 :
Now_loading...774KB :2007/12/14(金) 06:09:31 ID:9HZg1Pyi
適当な数値を文字列に変換する時に [20]なら"00020"。[132]なら"00132"。[5]なら"00005"。 という風に先頭に"0"を付けて任意の文字数の文字列に変換する、 っていうのをfor文とかを使わずに、1行か2行だけのスクリプトで実現させてた記述が このスレにあったのを覚えてるんですが、便利だな〜と感心してたのに どういったスクリプトだったか忘れてしまい、どうにも思い出せません…。 どなたか分かる方いますでしょうか?
レスしてもどうせ忘れるんだろw
>>261 頭に"00000"くっつけて後ろから5文字取る
function文はグローバル変数のような扱いをして他のMCに流用できないのでしょうか?
265 :
251 :2007/12/14(金) 12:22:28 ID:uG3KaI5F
>>256 タイムラインにコピペ?Flash9は使わずにFlex2で作ってるので問題ないとおもうんだが…
どうしてエラーでるか分かる人いる?
>>265 じゃあglobalのスコープの所でprivateな物作ろうとしてんじゃね?
どっちにしろ場所がおかしい。
>>264 バージョンと処理の内容によるけどできんじゃね?
3.0だとバインドに気を付けないといかんけど。
269 :
264 :2007/12/14(金) 17:18:01 ID:fw/mwyNg
返答ありがとうございます ということは 再生初期に全ての関数をflashに認識させる必要があるということですかね
バージョン:FLASH8 OS:winxp MCが停止してくれません。ご教授お願いします。 星MCの中に星図形MCを入れ子にしてASで動かしているのですが 星図形MCが停止出来ません。星MCのASは onClipEvent (enterFrame) { if (this[mcName]._x > 1000) { this.stop(); ←ココで星MCを停止 this.hosi_grd.stop(); ←ココで星図形MCを停止してるはずなんですが? } else { speed += 30; num++; mcName = "mc"+num; this.attachMovie("hosi", mcName, num); this[mcName]._x = speed; this[mcName]._y = 200; } }
星図形ってなに?
>>271 説明不足でした。すみません。
というかMCの動きを止める事が出来ません。
■星MC(星を無数に作る動きと横移動の動き)
|−■星図形MC(星を散りばめる動き)
星図形MCのASは
onClipEvent (load) {
this._xscale = this._yscale=Math.random()*100;
spd = Math.random()*5+3;
xSpn = Math.random()*15-7;
ySpn = Math.random()*15-7;
kakudo = Math.random()*60-30;
}
onClipEvent (enterFrame) {
this._alpha -= this._alpha/spd;
if (this._alpha<5) {
_parent.removeMovieClip();
}
this._rotation += kakudo;
this._x += xSpn;
this._y += ySpn;
}
ActionScript 2.0 です 階層化されたムービークリップやオブジェクトの中の変数の型指定をするには どうすればよいのでしょうか? var testObj:Object = new Object(); var testObj.num:Number;//シンタックスエラー
普通は初期にfor文等で100個なり生成して、enterFrameでは移動や変化と条件による 終了処理を書くけどな。ちなみにstop()は再生ヘッドを止める命令だよ。
htmlからflashに引数を渡すとき、 hoge.swf?a=10 のようにして、 flash内の_root.aで参照できるようなのですが、 AS3.0ではどのように参照すればよいのでしょうか? よろしくお願いします。
変数に入っている数値を部分的に抜き出すにはどうすればできるでしょうか? 例えば、変数kazuに256という数値が入っているとします。その数値の2番目の数(5)だけを抜き出したいのですが、 a = kazu.substr(1,1); で挑戦しましたが、substrは文字列しか使えないので無理でした。 他に何か方法あるでしょうか?
>>277 loaderInfo.parameters
>>278 数値を文字列に変換してからsubstrする
>>278 余剰演算子と割り算使え。
分からなかったら中学からやり直し。
>>279 this.loaderInfo.parametersとして参照してみましたが、
[object Object]としか表示されません・・・
もう少し詳しく教えていただけないでしょうか?
>>279 それを見て調べてみたのですが、toStringという便利な関数があったのですね。
おかげさまで出来ました。
ありがとうございました。
>>280 %と/のことは分かるのですが、求め方が分かりません。
中学生からやり直しですね……
わざわざありがとうございました。
>>282 第二位(10の位)を求めたかったら、
kazu % 100 / 10 => 5
になるだろ。
>>281 xxx.swf?aaa=bbb
trace(loaderInfo.parameters.aaa);
ああ、traceじゃなくて、テキストフィールド作ってそこに表示して。 出ないときはhtmlのJS外してシンプルなhtmlでやってみる。
286 :
277 :2007/12/16(日) 16:28:51 ID:MyocSUJE
いろいろ試しましたが、やっぱりnullになってしまいます・・・ タイミング的にまだ読み込んでいないのでしょうか・・・
>>272 >>270 の「if (this[mcName]._x > 1000) {」にあるmcName が何を指してるのか分からない。
ていうか、停止とか以前にそれはちゃんと動いてる?
>>274 >>287 やっぱり最初にfor文でattachMovieした方が良いでしょうね
mcNameが何を示しているかと言うとhosi.mc.[num]です
hosi.mc.[num]=星MC?
もう分かんないよ><
一応動いてます
MCのフレーム終了で止まってくれるので大丈夫です
後、ムービープレビューした時に何フレームからプレビューをするって指定出来るんでしょうか?
あほな質問してすみませんでした。 gotoAndPlayで出来ました。
290 :
Now_loading...774KB :2007/12/18(火) 15:54:13 ID:TzqRnZ4X
as3 の addChild() を拡張したいんですが、例えば var sp : Sprite = this.addChild(new Sprite(), {x:10, y:10}) as Sprite; みたいな形で、addChild() の第二引数に デフォルト値を格納したオブジェクトを 放り込めるようにするにはどーすれば良いのでしょうか...
>>290 よくわからんが、addChildメソッドをオーバーライドしたいって事か?
292 :
Now_loading...774KB :2007/12/18(火) 16:45:42 ID:TzqRnZ4X
>>291 多分オーバーラドって事だと思います...
ディスプレイリストに追加する際にプロパディも同時に追加出来るように拡張出来れば
コードを一行でまとめられて楽かなと思いまして...
>>292 たぶんって、、、、その程度の理解と利用目的かよw
>>290 addChildをオーバーライドすると面倒(つーかできないんじゃないかな)だろうから、
専用の関数ひとつ作ればいいんじゃね?
function getNewChild(_class,_parm):DisplayObject{
var o = new _class();
for (var prop in _parm) {
o[prop] = _parm[prop];
}
return o;
}
addChild(getNewChild(Sprite,{x:10,y:10}));
質問させてください 。 以下のようなXMLファイルをXPathAPIを用いて読み込もうとしているのですが 正しい値を取得できません。 <A> <B id='1'> <C>テスト1</C> <D>100</D> <E>ABC</E> </B> <B id='2'> <C>テスト2</C> <D>200</D> <E>DEF</E> </B> </A> 取得したい値としては Cが「テスト1」又は「テスト2」の中でDが「100」のEの値を取得するというものです。 取得するデータは「ABC」のみのはずなのですが、「ABC」と「DEF」両方取得できてしまいます。 スクリプトとしては var XPathString:String = "/A/B[C='テスト1' or C='テスト2'][D='100']/E/*"; var rare:Array = XPathAPI.selectNodeList(this.firstChild, XPathString); と記述しております。 どうぞご指導宜しくお願い致します。
296 :
Now_loading...774KB :2007/12/18(火) 23:32:00 ID:noBFvV6I
AS2.0でメニューボタンとか似たような大きさのボタンを複数個作る場合の時に 単純に絵をそれぞれMC変換するより、一つのMCのフレームごとに絵を配置し、インスタンス配置してフレーム調整の方が軽い という考えは間違ってないでしょうか それと、ライブラリからインスタンスを配置するのとattachMovieで配置するのでは 容量や重さ等何か違いはあるのでしょうか?
297 :
261 :2007/12/19(水) 01:54:46 ID:uRhNfhKo
>>263 返事が遅くなってしまって本当に申し訳ありません。
おかげでだいぶゲームの動きが速くなりました!
298 :
Now_loading...774KB :2007/12/19(水) 05:27:27 ID:uRhNfhKo
//ムービークリップのタイムライン _root.eraseMe(this); //_rootのタイムライン function eraseMe(a) { arrayDel(enemy_array,a._name); } function arrayDel(a,b) { a.push("dummy"); a.unshift("dummy"); a = a.join().split(","+b+",").join().split(","); a.pop(); a.shift(); } と記述して、配列の中からムービークリックの名前を消したいのですが、 arrayDelのスクリプトをtraceすると正常に動いているのに、 実際に配列の中身を見てみるとpushとunshiftだけが実行された形になっています。 きちんと実行させるためにはどうしたらいいのでしょうか? よろしくお願いします。
>>296 CPUやグラボの性能によってそれぞれのPCで全然違うだろうけど、一応算出してみました。
環境は、FLASH MX2004、Windows2000。
平均容量7KBの画像が連番で90枚あったので、それをボタンに見立ててインスタンスを作成。120FPSで実験
90個のムービークリップをattachMovieでステージに配置:
処理が終わるまで=平均7msec ファイル容量=618,2743B
90フレームのムービークリックをfor文でattachMovieして配置後gotoAndStop:
処理が終わるまで=平均9msec ファイル容量=615,018B
90フレームそれぞれに1枚ずつムービークリップを手動で配置:
最初に90フレーム一周するまで=平均824.5msec
2週目以降一周するまで=平均720.04msec
ファイル容量=632,662B
空の90フレームを用意してonEnterFrameで1枚attachMovieしては前フレームの1枚をremoveMovieClip:
最初に90フレーム一周するまで=平均798.667msec
2週目以降一周するまで=平均719.087msec
ファイル容量=631,957B
画像データじゃなくてベクターデータでもまた全然違うかもしれない。
こんな情報でお役に立てただろうか?
>>295 Xpathは使ったことないけど両方取得するような記述なのでしょう
>>298 何がきちんとかわからないが、そういうコーディングだからなのでは?
301 :
298 :2007/12/19(水) 10:55:59 ID:uRhNfhKo
>>300 分かりにくい文章ですいません。
function eraseMe(a) {
trace("A) arrayDel関数前のenemy_array = "+enemy_array);
arrayDel(enemy_array,a._name);
trace("C) arrayDel関数後のenemy_array = "+enemy_array);
}
function arrayDel(a,b) {
a.push("dummy");
a.unshift("dummy");
a = a.join().split(","+b+",").join().split(",");
a.pop();
a.shift();
trace("B) arrayDel関数中のenemy_array = "+a);
}
//トレース結果
A) arrayDel関数前のenemy_array = enemy0,enemy1,enemy2,enemy3
B) arrayDel関数中のenemy_array = enemy1,enemy2,enemy3
C) arrayDel関数後のenemy_array = dummy,enemy0,enemy1,enemy2,enemy3,dummy
現在のスクリプトだと上記のトレース結果になってしまうのですが、
B) と C) が同じ結果になってほしいのです。
なぜB) では理想の配列になっているのにC) では
a.push("dummy"); と a.unshift("dummy"); だけが行われた配列になってしまっているのでしょうか…
>>301 配列は参照型。
a = a.join().split(","+b+",").join().split(",");
この場所で、aはenemy_arrayが参照する配列とは別の配列を参照することになる。
>>301 なんで、B)では、enemy_arrayじゃなくてaを参照してるの?
それ別物。
つか、単にMCの名前を削除するだけなのに、なんでそんなややこしいことしてんの?
spliceとか使えばいいだけでは?
304 :
Now_loading...774KB :2007/12/19(水) 13:56:24 ID:UXJA67aB
>>294 おおぉ! いけました。
やっぱり、addChild() に手を加えるのは無理っぽいんですねー
有り難うございました!!
305 :
298 :2007/12/20(木) 05:16:39 ID:Wp8gM7Q3
>>302 返信ありがとうございます。参照型の特徴をきちんと理解できていませんでした…。
>>303 ムービークリップの名前を配列から削除する時に、その名前が配列のランダム番目に来る事があり
spliceのように配列の番号で指定することが出来なかったので、ちょっとややこしい事になっていました。
結果的に、
function eraseMe(a) {
enemy_array = arrayDel(enemy_array,a._name);
//中略
}
function arrayDel(a,b) {
a.push("dm");
a.unshift("dm");
x = a.join().split(","+b+",").join().substr(3,tmp.length-6).split(",");
return x;
}
上記のようにスクリプトを変えたら理想どおりの結果が返されるようになりました。
みなさん本当にありがとうございましたm(_ _)m
306 :
Now_loading...774KB :2007/12/20(木) 05:38:21 ID:oXUo7MIa
死にそう、助けて。AS3.0でつ。 クラス名を変数に入れて、 その値を使って、 new演算子でインスタンスを生成したいのだけど。 確かAS2.0では var className:String = "MyClass"; var instance:MyClass = new [className](); みたいにすれば、okだったと思うんだけど。 AS3.0ではどーやるの?
>>306 getDefinitionByNameでいけるよ
308 :
306 :2007/12/20(木) 07:49:46 ID:oXUo7MIa
>>307 ぬぉー!ありがとう。
リファレンス探しまくったんだけど、
flash.utilsパッケージにあったのかぁ。
これで寝れるよ。
307愛してるぜー!
309 :
Now_loading...774KB :2007/12/20(木) 10:17:10 ID:O1Y6/scC
関数でボタンAを押した時にボタンAのターゲットを 引数として渡すにはどうしたらいいのでしょうか? 例えばボタンAを押すとボタンAが毎フレーム10ピクセルづつ動くみたいにです。 ボタンBならボタンBが動くって感じです。 ボタンが複数あるため、ボタン一つづつ関数書くと面倒なので一つの関数を1フレームに書いてボタンで 自身のターゲットパスを引数で渡して関数を呼び出す仕組みにしたいんです。 AS2で書きたいのですが、どうしたらいいでしょうか。
>>309 as2.0だったら単純にthisで参照できるんじゃないかな
function clickHandler(){
trace(this + "を押しました");
}
button1.onPress = button2.onPress = clickHandler;
311 :
309 :2007/12/20(木) 12:35:34 ID:iVb8S+/v
>>310 それに近い事はしたのですが、thisですとボタン自身が他のムービクリップの中に
入ってると親が反応してしまうんです。
>>311 ボタンのthis参照は、配置されたタイムラインだから。
ボタンじゃなくてMCにする。
313 :
Now_loading...774KB :2007/12/20(木) 17:07:59 ID:pjbbPrjo
制作環境 ■FLASHMX/2004 ■windowsXP 外部のswfムービーを読み込み、その外部のswfの読み込み状況(LOADING)を表示させたいです。 ただし、読み込み状況を表示させるAS、およびムービークリップを 外部swfでなく、大元になるswfに記述したいのですが、どのような記述を行えば良いでしょうか?
>>313 MovieClipLoaderについてヘルプでも見てくれ。例が載ってるから。
315 :
296 :2007/12/20(木) 18:27:15 ID:gC1LFtGi
>>299 遅くなりましたが算出例ありがとうございました
要領や動作に結構な違いがあるのではと思っていたのですが実際はそれ程差は無かったんですね
あとはそれぞれの自分のあったやり方でといった事なんでしょうね、勉強になりました
あれ?リロードしたのにな(ノ∀`)
>>299 自分も興味がある問題なんでちょっと質問
> 90個のムービークリップをattachMovieでステージに配置:
> 処理が終わるまで=平均7msec ファイル容量=618,2743B
これ、6,182,743Bの間違い?それとも数字が間違ってる?
319 :
Now_loading...774KB :2007/12/21(金) 21:01:43 ID:qpJzjeBZ
>>318 4桁区切り知らないのか?
PSPのFlashPlayerの仕様って微妙だな
SharedObjectでflushしてもページのリロードしたらデータ消えるし
JavaScriptとの通信は出来ないし
しょうがないからURLから受け取ろうとしたらPSPでは〜.swf?abon=abonとかはローカルでは使えないし
PSPでローカルのFlashのActionScriptでセーブ機能を実装する方法があったら教えて欲しいなです
ageてしまいました すみませんでした
>>319 4桁区切りっていつの時代の話だよw
まあ、100歩譲って4桁区切りもありとしても、3桁区切りとの混在文章はありえないw
オーサリングツールで適当に引いた線に沿って動くMCを作ろうとしてます モーションガイドを使えば出来るけど、AS2でやるとしたらどういう関数があるでしょうか? ヒントでもよいのでよろしくお願いします
ボタンを押すごとに「ムービー再生」←→「ムービー逆再生」 を切り替えるものを作りたいのですが、行き詰まっている状況です。 ムービーを逆再生するスクリプトはどのように組めば良いでしょうか。 【現在のactionscript】 on(release){ top=_y; left=_x; right=_x; bottom=_y+120; keyFrame=30; movieSpeed=800; myFlash="flashMX" if(setFrame==ture){ this.Frame++; this.Play(); //test System.useCodepage=true; _root.mc_sample.loadVariables("sample.txt"); function getCount(); }else if(setFrame==false){ this.gotoAndback(); } } on(release2){ this.Back(); }
326 :
299 :2007/12/22(土) 23:12:27 ID:Y0HoSbpm
>>318 返事遅くなってごめんなさい。
618,2743B は 618,274B の打ち間違いでした。
319 涙目
>>323 適当に引いた線のxy座標を、線を引くときに時間tでプロットして配列に格納しておく
データ保存はsoなりphpつかうなりでいいし、そのテキストをインポートしてswfに埋め込んだっていい
実行時にはその配列座標に従ってMCを動かす
fpsとかプロットする時間間隔とかはやってみて調整
俺がやるならこんな感じかな
329 :
323 :2007/12/23(日) 09:12:47 ID:WlBEwUgP
>328 なる。現場で判断するんじゃなくて地図を与えるわけですね 大変参考になりました。ありがとう!
はじめまして。 AS3のインテリセンス(入力補間機能)ですが、これは自分で作成したクラスには適用されないのでしょうか? インテリセンスが適用されるようになる方法があればご教授お願いしますm(__)m
>>330 FlashDevelopで開発してるが
自分で作ったクラスのメンバとかメソッドの入力補完ならしてくれるよん。
Flash9はわからない。してくれるとおもうけど…。
クラスの宣言でもまちがってるんじゃない?
332 :
Now_loading...774KB :2007/12/25(火) 00:31:31 ID:X0dKEYRb
>>330 オーサリングツールは、何を使っているんだ!
334 :
330 :2007/12/25(火) 20:54:24 ID:zpBNcjXx
FlashCS3 Proの体験版です。
335 :
330 :2007/12/26(水) 12:33:55 ID:OCIRhJQT
>>334 それ、できない!。
FlashDevelopの使用を薦める。フリーだし、高速だよ
336 :
Now_loading...774KB :2007/12/26(水) 17:56:46 ID:guv2CE76
タイムライン側(一部) var textM:TextMask = new TextMask(〜); VM = 0; setInterval(goN, 2000, 0) function goN(gN) { gN += VM; textM.goMove(gN); VM++; } クラスTextMask側 function goMove(gN:Number) { barM[gN].onEnterFrame = function() { trace("load" + gN); barM[gN]._x += 2; } } AS2.0です クラス上の配列barMに格納しているMCをsetIntervalで一定間隔をあけて順に移動させていきたいのですが (barMにはタイムライン上にある連番状のtext0_mc〜text9_mcを格納) 上のソースでは出力窓にload0・・・load1・・・load2と、traceで指定した内容は間隔を空け何度も表示されているのですが 肝心のbarM[gN]._x += 2 の部分がまったく作動しません、別にトレースしてbarMの中身を調べたりしても問題は無いようなのですが どなたかアドバイス宜しくお願いします。。。
>>336 >barM[gN]._x += 2;
をthis._x +=2;とするとかかな
>>337 thisに変更で動いてくれました!ありがとうございました!
あとすみませんがもう一つお聞きしたいのですが・・・上と同じasソースで
class TextMask
var cNum:Number = 5;
・・・・・
function abc() {
trace(cNum);
}
function goMove(gN:Number) {
barM[gN].onEnterFrame = function() {
trace(cNum);
}
}
この状態だと関数abc内のトレース結果は5と出ますが、関数goMoveではcNumとそれと同じように指定した他変数の
トレース結果も全てundefinedと出てしまうのはどういった違いなのでしょうか
結局これはタイムライン側からgoMoveの引数を追加し持ってきて解決はしたのですが・・・
>>338 それだとTextMaskクラスオブジェクトに対してではなく、
MC「barM[gN]」に「変数cNumの中身をトレースして」という命令を書いた紙を
渡すようなもんで、当然MC「barM[gN]」はそんな変数知らないから
undefinedを出す。
TextMaskクラスに記述するから勘違いしやすいけど、
MC「barM[gN]」はTextMaskクラス自身とは別物のオブジェクトだからね。
function abc()がうまくいくのは、そのまんまTextMaskクラスオブジェクト
自分自身の中を見るから。
解決方法はいくらかあるんだろうけど、
例としては
var cNum:Number = 5;
の次に
var owner = this;
を追加して(変数の名前は適当)、
barM[gN].onEnterFrame = function() {
trace(owner.cNum);
}
とやってもうまくいくはず。
これはMC「barM[gN]」に
「TextMaskクラスオブジェクトにある変数cNumの中身をトレースして」
という命令を書いた紙を渡してるような感じ。
スコープ関係の質問しょっちゅう出てくるけど、
自分もあまり詳しくなくてよく混乱するし、
スコープに関して詳しく説明してるサイトとかないんかね。
FlashDevelopのことで聞きたいんだが、どこで質問していいか わからないからここできかせてもらうね。 Project→PropertiesからFlashの解像度とか設定できるみたいだけど 書き出した際、解像度も、描画位置もずれちゃうんだけど 対処法わかる人いる?
AS2でsetIntervalの時間を毎回ランダムにはできるのでしょうか? 試しに時間入力の部分を関数にしてMath.randomをしても最初一回効果があっただけでダメでした。
>>341 うおお、どうもありがとうございます。
Externalにしたら外部で開けるんですね!しらなかったです。
ついでに皆様にお聞きしたいのですがAS3でキーボードの操作から
Spriteを動かすプログラムを作ってるのですが
目的のSpriteにフォーカスが当たってないとキーイベントが反応しないとかで
stage.focus = hoge;
やら
stage.addEventListener(KeyboardEvent.KEY_DOWN , Hoge);
等、ためしてみたのですが、
スプライトにフォーカスを当てると何故か画面に何も描画されなくなってしまいます。
予期せぬ事態なため、わかりにくいと重いアップしてみました。
開発環境はFlashDevelop+Flex2です。よろしくお願いします。
http://www.uploda.org/uporg1176048.zip.html
すみません言い忘れました。 問題の場所はsiro.asの27行のところです。
テキストエリアに数値を入力して、計算ボタンを押すと ダイナミックテキストで出来たテキストエリアに 数倍された数値が出るようなフラッシュを作りました。 しかし、6桁とかの数値が表示されると3桁ごとのカンマが無いので すごく見にくいのですが、カンマが付いた数字を表示させる方法はありませんか?
>>342 めんどいのでsetInterval呼ばれたときの関数で処理を実行するかどうかを
randomに決めるとかでいんじゃね
>>344 とりあえず、新規作成でキーボードイベントをとるswf作ってみる
>>345 自作してください
>>342 setIntervalで呼んだ関数の中でclearIntervalして、
関数が終了する時に時間のパラメータをランダムにして
自分自身をsetIntervalするとか
349 :
Now_loading...774KB :2007/12/28(金) 18:54:26 ID:HEitcjxL
windowsXP・FLASH8・AS2.0です。 メインのswfのムービークリップの中に、loadClipでページごとのswfを読み込む形のページを製作中です。 メインのswfや一部のページのswfのStage設定は Stage.scaleMode = "noScale"; Stage.align = "TL"; なのですが、他の一部のページは構造の都合上Stage.align = "T"の設定の形で作ってました。 しかしメインのswfに読み込ませたら、メインのswfごと中央添えのような形になってしまいました。 これを、メインのswfはStage.align = "TL"、読み込む側の一部のswfをStage.align = "T"と別々設定にはできるのでしょうか?
350 :
Now_loading...774KB :2007/12/29(土) 21:31:14 ID:i0n+4WfH
ちょっとスレ違いですが該当するものがなさそうなのでここで質問します。 Flashプラグイン検出関係です。 swfobjectがオープンソースで最強かと思ったのですが、 客先にFlaプラグイン6入っているのにNoFlash部分が表示されてしまうと 言われました。 swfobjectの書式はバージョン6を指定し、 var so = new SWFObject("movie.swf", "movie", "640", "480", "6", "#ffffff"); で、SWFのパブリッシュももちろん6です。 客先はWindowsXPのデフォらしくプラブインの6が入っていてJSもONに、 ActiveXも有効ということです。 あるいはswfobject以外にNoFlashの記述がしやすいJSコードはないでしょうか。
>>350 客先に納品するもので勝手にオープンソースが最強と思ったからぶっこむってのは
ちょっとまずいんで無いの?swfobjectが何か知らんけど、ライセンスとか客先と合意が取れてるの?
あと、何で動かないかの検証をまずやるべきじゃないかと
プラグイン検出のJSってAdobeの出してるリファレンスに載ってたと思うがあれではだめなのか?
質問です。 ActionScript3でプログラムいていますが、 XMLのデータをswfの中に含みたいと思っています。 画像だと下のようにすればOKですよね。 [Embed(source="assets/logo.png")] 画像だとやり方が分かりません。 どのようにしたらxmlをswfに含む事ができるでしょうか。
>>352 >画像だと下のようにすればOKですよね。
>[Embed(source="assets/logo.png")]
>画像だとやり方が分かりません。
????????
うわ、 >画像だとやり方が分かりません。 s/画像/xml/ でした
え、何、これ、触っちゃいけない子?
356 :
352 :2008/01/01(火) 06:15:23 ID:OEqUoghe
xmlはEmbedできないで認識間違ってませんか?
普通に使える [Embed(source='test.xml')] public var TestXML:Class; として trace(TestXML.data.test) みたいなかんじで ただし、test.xmlは <data> <test>ok</test> </data>
358 :
352 :2008/01/01(火) 17:12:39 ID:OEqUoghe
>>357 なるほど
<?xml version="1.0" encoding="UTF-8"?>
をつけてはいけないんですね。
ありがとうございます
359 :
Now_loading...774KB :2008/01/02(水) 14:44:32 ID:ghbdIQ41
AS3でコンテキストメニューの設定がわからんっす ヘルプに載ってるpublic class ContextMenuExample〜 を試したのですが反映されません ファイル名を「ContextMenuExample.as」としFlaファイルと同じ階層に保存 メインフレーム側で var cm:ContextMenuExample = new ContextMenuExample(); と 呼び出し、実行しましたが反映されませんなんで?
>>359 >反映されませんなんで?
反映ってなんだよw
せめて、自分がやりたいことはこうで、こういうソースを書いたんだけど
うまくいかないとか書かないとなw
361 :
359 :2008/01/02(水) 15:55:15 ID:ghbdIQ41
説明不足ですんません やりたい事 AS3でのコンテキストメニュー設定(右クリで出るあれ) ソース ヘルプで'ContextMenu'と検索して最初に出るお手本(画面1番下) お手本の内容 デフォの右クリメニューを消して新たな項目を追加 メインフレーム側で var cm:ContextMenuExample = new ContextMenuExample(); で呼び出し 他のメソッドはすべてpriveteになってる で 実行後右クリメニューに変化無し なんで?
>>369 ためしたけどちゃんとできたよ。
たぶん、addChild(ContextMenuExample)してないからじゃないの?
作成したContextMenuは、InteractiveObjectのcontextMenuプロパティに設定しないとだめだぜ
ヘルプのは、redRectangle.contextMenuに設定してるから、赤い四角の上で右クリックしたときのみ反映されるぞ
すまんミス。addChild(cm)の間違いね。わかるとは思うけど。
flash初心者坊です 深度とスクリプトの関係ですが swapDepths で二つのMCの深度を変更して、traceで確認したところ mc1が深度1 mc2が深度20 なのですが 実行してみると、mc1のが上にきてしまいます。 こういったことって、なにかの関係でおこることなのでしょうか。 mc1は動的に生成し、画像をそこに表示しているなどあるのですが、深度の数値 が正しいのに配置がおかしいということがおこるのかどうかをお聞きしたいので 簡単に説明させていただきました。 flash8です どなたかご教授ください
365 :
359 :2008/01/02(水) 17:01:07 ID:ghbdIQ41
おおおお できました! ありがトンでつ! InteractiveObjectのcontextMenuプロパティ? 何がなんだかさっぱりわかりませんが調べてみます 正月休みで集中して覚えようと思っております
366 :
359 :2008/01/02(水) 17:13:23 ID:ghbdIQ41
InteractiveObjectっていうのは、SpriteとかMovieClipが継承してるクラスのことね 継承に関してはオブジェクト指向について勉強すればわかると思うよ
えらく初歩的ですみません。 2分弱のコマアニメを作っているのですがプレビューの際、時間を取らないように 『「1キー」を押したら○フレーム目に戻る」といった感じのものが欲しいです。 勉強する気はあるのですが現時点では全くの素人なので申し訳ありませんがどなたかお願いします。
AS2です attachMovie等でムービークリップを作るとき、すでに同じ深度にムービークリップがある場合には 元のムービークリップは消えて新しく配置したものが表示されますが この場合にはremoveMovieClip等で消さなくてもよいのでしょうか? 作ったり消したりするムービークリップはただ絵が描いてあるだけで なんの変数や関数も入力していないものです attachMovie系の繰り返しで絵を切れ目なくパカパカ変えようと思ってるのですが・・・ 毎回removeMovieClipで消したほうがよいですかね? それともremoveMovieClip省略しても問題ないですか?
>>370 絵が描いてあるだけなら、普通にフレームアニメの処理のほうが軽いでしょ
重いMCをたかだか1枚のグラフィックのためにattachするよりはコストがかからない
参照されなくなったMCはいつかはGCされる
removeでnullにしても置き換えで参照が無くなったカスでもいつかはメモリ解放される
372 :
370 :2008/01/05(土) 15:56:18 ID:h/HmLoHe
>>371 1つのムービークリップの中の各階層の各フレームにアニメパターンが全て入っているなら
そっちの方が楽なのですが、
今回は動的に参照先ムービークリップが変わるので・・・
あ、でもあらかじめグラフィックを全てまとめたムービークリップを作っておけばいいのかな?
・・・もう一度構成を考えてみます
for(var i=0; i<=10; i++) { var myMC:MovieClip = this.attachMovie("sss", "sss"+i, i); myMC.spi = Math.PI * 以下数式 という一部分をサンプル本で見たのですが、時前宣言等してない.spiが何なのかわからず var MC:MovieClip; MC.spi = 77; trace(MC.spi); 新しいflaにこう書いてテストしたらtrace結果はundefinedでした for(var i=0; i<=10; i++) { var MC:MovieClip = this.attachMovie("sss", "sss"+i, i); } MC.spi = 77; trace(MC.spi); ムービークリップsssを作りリンゲージして、こう訂正してみるとtraceの結果は77とでました この訂正前と訂正後の.spiの違いは何なのでしょうか? 最初は.spを書いた事でspiiがmyMCやMCのプロパティになった?などと思っていたのですが…
>>373 > var MC:MovieClip;
これは変数の宣言しただけで、MCインスタンスは作られてない。
だからそのプロパティも存在しない。
http://www.onwired.com/ このサイトのコピー文や中段のタイトル、サイト内各ページのタイトル部分など
選択してみるとFlashになっているような。ソースを見てもプレーンテキストでも表記されてるので
CSSでFlashに置換えて、Actionscriptで文字を表示させてるのだと思いますが、どういうカラクリになってると思いますか?
376 :
373 :2008/01/06(日) 09:45:44 ID:cgWKUcM4
>>374 宣言だけで中身を入れないと存在しないままって事だったんですね、理解できました、ありがとうございます!
377 :
368 :2008/01/06(日) 11:36:19 ID:IDd4aZAa
>>369 すみません都合つかなくて返答が遅れました。
FLASHのバージョンは8ベーシック、ASは…1.0&2.0?
専門的なことは分らないので、的を外しているかもしれませんが私が理解した内ではこんな感じです。
>>375 どこにもFlashなんて見当たらないよ。どこのこと?
上部メニューのwhereにある動く画像はAjax?とかだと思うけど。
379 :
378 :2008/01/08(火) 14:42:43 ID:fHRuqW91
380 :
Now_loading...774KB :2008/01/09(水) 12:23:58 ID:VydZW/PG
AS2でsetTextFormat指定しているダイナミックテキストの透明度(alpha)を指定or変更したりはできるのでしょうか?
>>380 埋め込んだフォントならできたと思う。
デバイスフォントは無理。
>>381 返信ありがとうございました、デバイスフォントはやっぱり無理なんですね
マスクとか別な方法でやってみます
すいません。 FlashDevelopってアンインストーラーが付属しております?? インストールする際に設定項目をいじったのかうろ覚えで スタートアップにもプログラムの追加と削除にもそれらしきものが見つからない… インストールしたフォルダにもそれらしきものがないし、 もう一度セットアップを起動してもないんだよね。 Registry Modificationsっていうのは関連づけ? 関連づけ変えられると困るんでチェックはずしているんだが。
>>384 なきゃねーんだろw
ASスレで間抜けな質問してんじゃねーよw
>>384 オレのはバージョン 3.0 beta 5だけど、
アンインストーラーはインストールしたフォルダにあるよ
387 :
Now_loading...774KB :2008/01/10(木) 02:22:31 ID:ELazuCYm
int型の変数を参照渡ししたいんだけど できる?
普通は単体でなくClassのプロパティとかで使用するけど、やるなら var aa:Number = new Number(12345); みたいな感じか。必要性感じないけど。
AS2です 複数のクラスインスタンスを作りたいのですが 識別子がありません。とエラーがでます どのように書けばいいのでしょうか?よろしくおねがいします for (var i = 0; i<6; i++) { var this["obj"+i]:balloon = new balloon(); }
>390 こう?じゃないよねwやってること同じだし var tarObj:Array = ["obj0", "obj1", "obj2"]; for (var i = 0; i<3; i++) { var this[tarObj[i]]:balloon = new balloon(); } どう考えればいいんでしょう?
var tarObj:Array = new Array(); for (var i = 0; i<3; i++) { tarObj.push(new balloon()); } これでいいと思われ
balloonクラスわからんからDateで。あと、クラス名は大文字で始める。 var obj:Array = new Array(); for (var i = 0; i<6; i++) { obj[i] = new Date(); } trace(obj); trace(obj[0]);
394 :
389 :2008/01/11(金) 15:01:27 ID:KoPpEYyd
>392>393 2ch停止してた?にしては復帰早すぎだけど ありがとうございます。これを参考にいじってみます 3ヶ月ぶりだと文字とかお約束すら忘れてしまう・・
シューティングゲームで、敵と自弾の当たり判定を取るときに、現在は 敵側から自弾の最大数分だけifでhitTestしているのですが、もっと処理を 軽くする手法にはどんなものがあるのでしょうか? 考え方、程度のことで結構ですので、どうかご教授ください。
hitTestは重いからできるだけ使わないほうがいい やり方は色々あるけど、四角形の座標で判定したり、BitmapDataの色塗りで判定したり やや面倒だけど4分木とか処理を減らすテクニックはいろいろある 「衝突判定」で検索すると色々出てくると思うよ
>>396 ありがとうございます。
ヒントを頼りに勉強してみます。
Bitmapイメージ上に描画が出来るソフトが作りたいのですが、上手くいきません。 白い背景に描画出来る所までは出来ました。 それにBitmapを読み込ませようとすると、読みこむのですが描画が出来ないのです。 コードは bmp = flash.display.BitmapData.loadBitmap("image"); _root.attachBitmap(bmp,0); _root.lineStyle(10, 0xFF3300, 60); this.onMouseDown = function(bmp) { flag = true; xbegin = _root._xmouse; ybegin = _root._ymouse; _root.moveTo(xbegin, ybegin); }; this.onMouseUp = function(bmp) { flag = false; } this.onEnterFrame = function(bmp) { if (flag == true) { xpoint = _root._xmouse; ypoint = _root._ymouse; _root.lineTo(xpoint, ypoint); } }; パソコンはWinXPのAS2です。 初歩的な質問で申し訳ありませんが、ご教授をお願い致します…
>>398 bmpをattachした上の階層に描画用のmcを用意してあげればいいんじゃない?
たぶん今のままだとbmpの下に描画してる。
400 :
398 :2008/01/12(土) 11:26:36 ID:so2RZJGO
>>399 bmp = flash.display.BitmapData.loadBitmap("image");
_root.attachBitmap(bmp,0);
の部分とその他の描画の部分をmc毎に分けて
上記の部分のmcが置いてある上のレイヤーに描画のmcを張り付けてみましたがダメでした…
ライブラリから読み込むとできないのでしょうか。。。
ちなみに描画したいのはデジタルカメラの写真データなのですが。
>>400 ライブラリにリンケージ名「image」のビットマップがあるとして
attachBitmap(flash.display.BitmapData.loadBitmap("image"),0); //深度0に画像
//深度1に線
with(createEmptyMovieClip("drawMC",1)){
lineStyle(1,0xFF0000);
lineTo(320,240);
}
で描けてるよ。
よく使う関数を外部asファイルに記述して、必要なMCでincludeしようと 思うのですが、こういう書き方ってありですか? 今は推奨されない方法でしょうか
クラスの構想がまさにそれです
>>403 レスどうもです。必要なのは関数だけなんですが、つまり
クラス化を利用するように考え直す方が良いのでしょうか
失礼しました。↑の質問は取り消します。 新たに質問なのですが、あるMC内でインスタンス化した クラスは、その"あるMC"がremoveMovieClipされた時点でガベージコレクションの 対象となるのでしょうか? 事前に、確実にインスタンスを削除しておく方法はありませんか?
>>405 参照が無くなった時点でGC対象になるでしょ。
CじゃないんだからGCを理解汁。
マウスストーカーみたいなのってサンプルないですかね。。
>406 ありがとうございます
410 :
Now_loading...774KB :2008/01/16(水) 21:06:35 ID:nd56/1x1
411 :
Now_loading...774KB :2008/01/17(木) 11:48:07 ID:r4ZgJNfr
サムネイル付きスライドショー作成しています。 サムネイルクリックで1枚ずつ外部JPGファイルを表示するんですが いかんせんファイル数が多すぎ+重すぎて読み込むのに時間がかかります。 サムネイルクリックごとに1画像ずつ読み込めば時間短縮にはなりますが サムネイルクリックするたびに表示に若干の時間がかかるのが嫌だと言われてしまいました。 何かこう外部JPGファイルを読み込むのにうまく時間短縮する方法はありませんか? 今はMovieClipLoaderクラスを使って1ファイルずつループで読ませてます。 ファイル自身は自分が用意するわけではないので軽くするのは難しそうです。
ない
413 :
Now_loading...774KB :2008/01/17(木) 12:19:33 ID:bTgpxrMe
>>410 this.stop();
でいいんじゃね?
>>411 物理的に無理だと相手にも納得させてやれ。
「東京から大阪まで行くのに、新幹線や飛行機でもまだ遅いといわれました。
もっと速く移動する方法はありませんか?」
と同じようなことを言ってる。
作りによっては、一度に読む込むファイル数を押さえるとかあるかもしれんが
そのへんは作ってるものの具体的情報を示さないと、提案できないと思う。
>>412 >>414 ありがとうございます。やはりないですか・・・
手探り状態で作ったため中身がかなり酷い状態なので
一度作りを見直してみようと思います。
>>411 サムネイルのonRollOverイベントで読み込み開始するとかすれば…どうかな
>>411 ・すぐにクリックされそうなものだけプリロードする(サムネイルが画面内にあるものとか)
・ローディングバーを使って気分的に短くする
>>413 stopの指定は色々試しましたが無理でした。
ASが空MCをマスク化する際のターゲットの指定やマスク表示のtrue,falseを変更すると
色々と動作が変わったのでですが、マスクと別MCの共存は出来ず・・orz
分かる方いらっしゃいませんかねぇ・・
420 :
418 :2008/01/18(金) 01:27:10 ID:aN9CSSEU
>>419 さん ありがとうございます。サンプルはもちろん動いています。
デバッグをおこなったところ、マスクmcや読み込み用mcが実行される度に深度が増えてるのが分かりました。
そのため配置したムービーが突然消えたりした模様です。
rootに置いたMCの深度を上げたところ希望の動作になりました。
勉強不足ですみません。
ちなみにご指摘の
var time:Number = 300*(_mc.generation+1); を
var time:Number = 300*(_mc.id+1) に変更すると、マスクのトランジット効果がなくなりスライドショーになってしまいました・・
421 :
Now_loading...774KB :2008/01/18(金) 08:16:37 ID:KtTrNv6a
[Embed(source='images/001.gif')] private var img001:Class; [Embed(source='images/002.gif')] private var img002:Class; [Embed(source='images/003.gif')] private var img003:Class; [Embed(source='images/004.gif')] private var img004:Class; [Embed(source='images/005.gif')] private var img005:Class; [Embed(source='images/006.gif')] private var img006:Class; [Embed(source='images/007.gif')] private var img007:Class; [Embed(source='images/008.gif')] private var img008:Class; [Embed(source='images/009.gif')] private var img009:Class; [Embed(source='images/010.gif')] private var img010:Class; AS3のクラス内でこのような形で100枚ほど小さい画像を読込みたいのですが、 for文などで回してソースをシンプルにしようとした時に、 クラス名が動的に決めてやるするやり方が分からなくて困っています。 連番ファイルを大量にEmbetする場合はどのようにすれば良いのでしょうか。 環境 WindowsXP Flex Builder 2 ActionScript3
>>421 Embedはしょうがない。
スクリプトかなんかでコードは自動生成して、入力の手間を省くぐらいしか。
423 :
Now_loading...774KB :2008/01/18(金) 08:44:01 ID:KtTrNv6a
>>422 やっぱりしょうがないですか。
今もスクリプトで生成しているので、その方向でいきます。
ありがとうございました。
>>420 >ちなみにご指摘の
>var time:Number = 300*(_mc.generation+1); を
>var time:Number = 300*(_mc.id+1) に変更すると、マスクのトランジット効果がなくなりスライドショーになってしまいました・・
まじっすか
サンプル動かしてみて上手く動かなかったので
気付いたことなんだけど
まぁ解決したのならどうでもいい事だ
こっちは忘れてくれ
425 :
Now_loading...774KB :2008/01/18(金) 16:34:00 ID:747Oyq+9
AS3でループスクロールをする方法を教えてください。 今はSprite上にMCを並べてステージから消えたらxの位置を元に戻すようにしてるのですが、 mc1 mc2 mc3 と並んでたら mc3 の後mc1へきれいに繋がりません。 (消えてから位置を戻すので当然なんですけど) mc3 が残ってるうちにmc1が現れるようにしたい。 ちなみにmcの数とサイズは不定です。 よい方法を教えて欲しいです。
426 :
Now_loading...774KB :2008/01/18(金) 19:33:51 ID:BN6DCAY+
すみません。FLASHをウインドウいっぱいに表示する方法を教えてくれませんか? スクロールバーを出したくないのです。(ステージを大きくとるのは無しの方向でお願いします。)
flashファイルを直接開く
428 :
Now_loading...774KB :2008/01/19(土) 00:27:16 ID:rTlC+eqS
429 :
Now_loading...774KB :2008/01/19(土) 03:09:45 ID:b1I8Nx1T
AS3.0で親SWFに読み込んだ子SWFから親SWFのファンクションや変数を使うには どうすればいいんでしょうか。
430 :
Now_loading...774KB :2008/01/19(土) 07:05:58 ID:WGiGWNcF
私が小学生の頃、
日本中でノストラダムスの予言が大流行していた。
「1999年の7月に人類は滅亡する!」
という例のお騒がせ終末予言である。
大人になって社会に出て働きだして、
あくせくと忙しく日々を過ごしながら、
1999年は、
ありふれた日常の中であっさりと過ぎていった。
人類は滅ばなかった。
これからここで、
1999年に起こるかもしれなかった人類の壊滅的破局を、
誰にも知られずにこっそりと回避させた人たちがいた...
という設定で、
荒唐無稽なストーリーを描いてみたい。
無論、100%完全なフィクションである。
http://www5.diary.ne.jp/logdisp.cgi?user=532063&log=200705
>>429 子swf から
var lod:Loader = loaderInfo.loader;
var parentRoot:MovieClip = (MovieClip)(lod.root);
って感じで Loader を介せば parentRoot で親MCが参照できると思う
432 :
Now_loading...774KB :2008/01/19(土) 17:55:24 ID:hYO8TtAJ
Flex3のAS3.0で、ソケット通信のプログラムを作っています。 Flashでサーバーを作って、C言語のクライアントと通信を行いたいのですが、 ググってみたところ、Flashをクライアントにするサンプルばかりで サーバーにする方法が判りません。 acceptなどの機能はFlex3にもございますでしょうか? よろしくご指導お願いいたします
>>432 Flash の使いどころって そもそもクライアントだと思うけど
サーバにするという発想に驚いた
>>431 さんくす。親からはLoaderで簡単に子swfにアクセスできたんだけど
子swfにLoaderを使うという発想はなかったわ。
AS2.0です。 モーションデザインの本を読みながらやっていて、 ムービークリップが外からステージ内に出てくるモーションを作成してから、 「正逆再生機能」という、クリックするとムービークリップが出てきて、 もう一度ムービークリップをクリックすると引っ込む、正逆再生が入れ替わるアクション onClipEvent (load) { open = false; } onClipEvent (enterFrame) { if (open) { nextFrame(); } else { prevFrame(); } } を書いたのですが、そのムービークリップ内に先に作っていた再生・停止ボタンなどが無効化されてしまっています。 再生ボタンを押そうとしても、上記のアクションにより、押したら引っこんでしまいます。 再生・停止等がある部分をクリックしても引っ込まないで、ちゃんとそれが再生されるようにするにはどうすればいいでしょうか?
>>435 書き間違えかもしれないが
onClipEventでopen=falseにしてるからデフォルトが逆再生
もし再生ボタンを押した時の処理がopen=falseになってたら逆再生になるよ。
そうでないならボタンを押した時の処理を記述しないと分からないな。
437 :
435 :2008/01/20(日) 20:01:31 ID:Nf7W+hYF
>>436 ちゃんと動作するので、書き間違えではないと思います。
その出てきたページの中に埋め込んであるムービーのボタンは、再生・停止・早送り・早戻しがあって、
上記のアクションにより、そのページのどこを押しても引っ込んでしまうようになってるため、
再生などのボタンが押せないということです。
ちなみに、再生ボタンのアクションは、
on (release) {
if (_root.hayaokuri.ID != undefined || _root.hayamodori.ID != undefined) {
clearInterval(_root.hayaokuri.ID);
clearInterval(_root.hayamodori.ID);
}
if (_root.ムービー動作のインスタンス名._currentframe != _root.ムービー動作のインスタンス名._totalframes) {
_root.ムービー動作のインスタンス名.go("nx");
_root.ムービー動作のインスタンス名.play();
}
}
です。
プログラミングには疎く、ほとんど無知ですが、よろしくお願いします。
>>437 AS2.0だったら、上の階層にボタンイベント設定すると、そこから下にはイベント
伝達されなくなるんじゃなかったかな?
対処方法はAS2.0だったら上の階層のイベントハンドラ(メソッド)内で、
クリック位置の座標判定するのが一番簡単なんじゃね?
439 :
438 :2008/01/20(日) 20:25:50 ID:LumvNvFO
あー、on()ハンドラに書いちゃってるのか。だったら面倒だな。 決め打ちでいいなら、上の階層のムービークリップのhitAreaを、 ボタンの形をくりぬいたインスタンス作って、それに設定するとかが楽かな。 汎用的じゃないけど。
Flex3、AS3.0で質問です。 Socketを使ってサーバに接続し、返ってきたレスポンスヘッダを読み込もうとしています。 readUTFBytes(Socket.bytesAvailable)とデータ部分を指定して 読み込むことは出来るのですが、readUTF()でヘッダ部分から読もうとすると 「#2030: ファイルの終端 (EOF) が検出されました。」とエラーが出ます。 データがあってヘッダが無いなんてことがある訳も無く、 何か根本的に理解していないんだと思います… 下記がエラーが出る部分です。よろしくお願いします。 private function HttpResponse(evt:ProgressEvent):void { var MyResponse:String = socket.readUTF(); }
441 :
440 :2008/01/21(月) 04:17:15 ID:vb4qhdXW
自己レスで申し訳ないんですが、なんとなく解決できました。 色々調べてみると、一回のリクエストに対して受信イベントが何度も発生していまして。 一度目の受信でヘッダ情報、二回目以降(データ長によって複数回)の受信があるようです。 データを追記していく形で全データを読み込むことが出来ました。 ただ、これがそもそもHttpかTcpかの仕様なのか、 ASで扱うデータサイズの問題なのか、理屈が分かっていません。 もしご教授頂ければ幸いです。よろしくお願いします。 ああ寝ないと。
442 :
Now_loading...774KB :2008/01/21(月) 07:21:15 ID:JPRk/Hws
>>441 HTTPの仕様
ヘッダ情報に受信バイトの情報があるはず。
てかUTFなんて決めうちでいいのかコレ
443 :
Now_loading...774KB :2008/01/21(月) 12:13:39 ID:feWa3P47
AS2.0です _rootの階層にムービークリップAとムービークリップBがあり ムービークリップBの中の1フレーム目で for(var i=0; i<6; i++) { MC[i] = this.attachMovie("creMC", "creMC"+i, i); と6つムービークリップを貼り付けてます この貼り付けた6つのMCをonReleaseした時に、そのリリースしたMC自身とムービークリップAの深度を交換 (見た目がリリースしたMCの下にムービークリップAが来るように)したいのですがどうも上手くいきません _rootの階層に ムービークリップA.swapDepths(8000); MCリリースした時に var topDepth = _parent.getNextHighestDepth(); リリースMC.swapDepths(topDepth); trace(topDepth); こうしてみたtrace結果は8001や8002と出るのに見た目はムービークリップAの下にあるままです これは一体どこに問題があるのでしょうか
>>443 BがAの下にあるなら、リリースMCの深度変更してもAの上には出ないかと
Bの中でリリースMC6つの順序が変わるだけで
445 :
443 :2008/01/21(月) 14:43:22 ID:feWa3P47
>>444 レスありがとうございました、深度の根本的な理解が足りなかったですね;
別な方法を考えてみようと思います
446 :
440 :2008/01/21(月) 23:32:01 ID:vb4qhdXW
>>442 ありがとうございます。
受信データの先頭部分にヘッダ情報が書いてあるとばかり思っていました。
文字コードに関してはヘッダ情報から読み込んで、
後の処理を振り分けます。ありがとうがざいます。
447 :
Now_loading...774KB :2008/01/22(火) 13:29:13 ID:VvLebitU
AS2で3つのムービークリップloader1_mc、loader2_mc、loader3_mcに同数の外部jpgファイルをそれぞれ読み込ませ、 読み込み進行度をstatus1_mc、status2_mc、status3_mcに表示させたいのですが ダウンロードのシミュレートをすると画像は読み込まれますがstatusの数値が全く変化しません var imgLoader:MovieClipLoader = new MovieClipLoader(); var objListener:Object = new Object(); for(var i=1; i<4; i++) { objListener.onLoadStart = function(target_mc:MovieClip):Void { this["status"+ i + "_mc"].per_txt.text = "0%"; this["status"+ i + "_mc"].total_txt.text = "0KB"; }; objListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number):Void { var percent:Number = Math.floor(nLoadedBytes/nTotalBytes*100); this["status"+ i + "_mc"].per_txt.text = percent +"%"; this["status"+ i + "_mc"].total_txt.text = "total " + Math.ceil(nTotalBytes/1024) + "KB"; this["status"+ i + "_mc"].bar._xscale = percent; }; ーー中略ーー } imgLoader.addListener(objListener); imgLoader.loadClip("photo1.jpg", loader1_mc); imgLoader.loadClip("photo2.jpg", loader2_mc); imgLoader.loadClip("photo3.jpg", loader3_mc); 短絡的にfor文+配列アクセス演算子を入れ込んでみましたが、やっぱりおかしいのでしょうか
448 :
Now_loading...774KB :2008/01/22(火) 14:09:53 ID:wTRK0GX/
はじめまして、AS2.0を使っています、フラッシュ制作やプログラム技術はかなりの初心者です。 とあるホームページを参考にキーボードの←→でムービークリップを左右に回転させる事に成功したのですが、そこからスペースキーを押すことで動かしたムービークリップの位置は変更せずに、回転するための中心点を変更しようと思ったのですが・・・ (スペースキーを押すたびに、動かしたムービークリップの位置はそのままで、にムービークリップが円運動する中心点は変更される) 上手い解答方法が思いつきません。 仮の設定ですが、円運動をさせる中心点はx100.y50とx100.y150の2箇所で固定、としています。 よろしくお願いします。 いまま参考にして作ったものは・・・ onClipEvent(load){ R = 100; kakudo = 0; mv_ya = 0; ya_xpos = 100; ya_ypos = 50; } on(keyPress "<Right>"){ mv_ya += 5; } on(keyPress "<Left>"){ mv_ya -= 5; } on(keyPress "<Space>"){ /* ここに中心点を変更するプログラムを書く。 */ } onClipEvent(enterFrame){ theRadian = kakudo * Math.PI / 180; this._x = Math.cos(theRadian) * R + ya_xpos; this._y = Math.sin(theRadian) * R + ya_ypos; kakudo = mv_ya; } ps ちなみに、複数個の同じ様な動きをするムービークリップ用意して、背景を回転させるように動かしたいと思っています。
449 :
Now_loading...774KB :2008/01/22(火) 14:25:46 ID:MycnA8eI
質問なんですが、 Flashでお絵かきツールを作っています。ボタンを押すと色が 変わるような仕組みにしようと考えているのですが、 線を描画する所まではきて、ここから行き詰っています。
そうですか。がんばってください。
>>447 statusのムービークリップの指定が正しくないんじゃないか
this["status"+ i + "_mc"]〜だと、この場合thisはobjListenerだし
root直下にあるなら_root["status"+ i + "_mc"]〜とかにしないと
452 :
447 :2008/01/22(火) 16:37:11 ID:VvLebitU
>>451 レスありがとうございます、thisを_rootに修正してみましたができませんでした、status_mcは_root階層に置いてあるのですが
やはりfor文の扱いに問題があるのでしょうか
>>452 気になったんですが
this["status1_mc"].per_txt.text = percent +"%";
this["status1_mc"].total_txt.text = "total " + Math.ceil(nTotalBytes/1024) + "KB";
this["status1_mc"].bar._xscale = percent;
という風に決め打ちした場合はどうなりますか?(thisを_rootにして確認も必要かと)
もし"status1_mc"だけ問題なく表示されるのであればのであればおそらく
元の文をfor文でネストする必要がある様な気がします。
>>452 for文をonLoadStartやonLoadProgressの中に書くとおkだった
objListener.onLoadStart = function(target_mc:MovieClip):Void
{
for (var i = 1; i < 4; i++)
{
_root["status" + i + "_mc"].per_txt.text = "0%";
_root["status" + i + "_mc"].total_txt.text = "0KB";
}
};
objListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number):Void
{
for (var i = 1; i < 4; i++)
{
var percent:Number = Math.floor(nLoadedBytes / nTotalBytes * 100);
_root["status" + i + "_mc"].per_txt.text = percent + "%";
_root["status" + i + "_mc"].total_txt.text = "total " + Math.ceil(nTotalBytes / 1024) + "KB";
_root["status" + i + "_mc"].bar._xscale = percent;
}
};
連投すまん
>>454 だと全部のstatus_mcに同じ画像の読み込み状況が入ってしまう
んで、読み込み中のloader_mcの数字から情報を表示するstatus_mcを決定するようにした
これでいけることはいけるはず…
objListener.onLoadStart = function(target_mc:MovieClip):Void
{
var targetMCNo:Number = parseInt(target_mc._name.substr(6,1));
_root["status" + targetMCNo + "_mc"].per_txt.text = "0%";
_root["status" + targetMCNo + "_mc"].total_txt.text = "0KB";
};
objListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number):Void
{
var percent:Number = Math.floor(nLoadedBytes / nTotalBytes * 100);
var targetMCNo:Number = parseInt(target_mc._name.substr(6,1));
_root["status" + targetMCNo + "_mc"].per_txt.text = percent + "%";
_root["status" + targetMCNo + "_mc"].total_txt.text = "total " + Math.ceil(nTotalBytes / 1024) + "KB";
_root["status" + targetMCNo + "_mc"].bar._xscale = percent;
};
457 :
447 :2008/01/22(火) 18:28:48 ID:VvLebitU
>>453 レスありがとうございます、this["status1_mc"]や_root["status1_mc"]としてみても動きませんでした
>>454-456 レスありがとうございます、456のソースをコピペさせてもらいましたが
演算子 '=' は、オペランドの前に来る必要があります。
var targetMCNo:Number = parseInt(target_mc._name.substr(6,1));
というエラーが出てしまいます
458 :
447 :2008/01/22(火) 18:55:22 ID:VvLebitU
すみません、456のソースのスペースを削除した所ちゃんと動きました、失礼しました ちゃんと個々にper、total値も取得されるようになりました 色々とご教授頂きありがとうございました!
>>448 Rをムービークリップの位置と移動後の中心点を元に変更して、
kakudoとmv_yaも同じように変化させればいけんじゃない?
460 :
Now_loading...774KB :2008/01/22(火) 21:24:00 ID:Ddx5faSk
Fuseを使って、ムービクリップ"aaa"が移動し終わったら、 ムービクリップbbbを無効化するようにしたいのですが、 どうのようにしたらいいでしょうか? com.mosesSupposes.fuse.ZigoEngine.doTween(_root.aaa, "_x", -600, 2.300000E+000, "easeOutBack", 2.000000E-001); _root.bbb.enabled = false; そのまま並べて記載しただけでは、両方、アクションが反映されてしまい、 移動途中で、すぐに無効化になってしまいます。 試行錯誤したのですが、行き詰っております。 よろしくおねがいします。
>>460 サードパーティのライブラリならそっちのサイトとかで聞いた方がいんじゃね
462 :
Now_loading...774KB :2008/01/23(水) 11:15:29 ID:MFAlRbcu
460です。Fuse専用スレッドなどあるのでしょうか?
>>462 何で 2ch での解決に拘るんだよw
公開元に聞けって話だろうがい
英語がだめってんなら
Fuse 使ってる人のブログで聞けば?
465 :
Now_loading...774KB :2008/01/23(水) 15:09:35 ID:z804iLJb
Flash8 AS2 AS2のクラスで下のようにはできないんでしょうか? class Line extends MovieClip{ public function onEnterFrame () { AX = this._name.substr(-1,1)._x; BX = _root.MC._x; this.clear(); this.lineStyle(1, 0xCCCCCC, 100); this.moveTo(AX, 100); this.lineTo(BX, 100); } }
>>465 できないんでしょうかって何なの?
コンパイルエラーが出るの
実行しても何も出ないとか?
少なくともAX,BXの値ぐらいtraceしてみ
>>466 ああ、すいません。何もでないんです。
traceしてみても結果がでないです。
468 :
Now_loading...774KB :2008/01/23(水) 17:39:27 ID:4lPHv9Tj
AS3で質問します var Box1:Sprite = new Sprite(); var mc1:MovieClip = new MovieClip() Box1.addChild(mc1); //上記のBox1があるとして、 var Box2:Sprite = new Sprite(); Box2 = Box1 ; //みたいな感じで、mc1ごとBox2にBox1と同じ内容のスプライトを作りたいんですが、 //Box2 = Box1 ;じゃ出来ないようです。Box2.addChild(mc1);として同じように作るしかないんでしょうか?
469 :
Now_loading...774KB :2008/01/23(水) 18:19:21 ID:iv0LEjmw
>>465 なんか適当なムービークリップをライブラリに作って、クラスを割り当てれ
具体的にはヘルプの「ActionScript 2.0 の学習>ムービークリップの操作>ムービークリップシンボルへのクラスの割り当て」を参照
あと、
>AX = this._name.substr(-1,1)._x;
この「this._name.substr(-1,1)」って、ムービークリップの名前から最後の文字を抜き出す処理だよね
これで抜き出した文字に「._x」つけてもundefinedになるんじゃね?
文字列でムービークリップを指定したいなら、ドットじゃなく配列アクセス演算子([])使わんとだめでは
>>467 MC作ってリンケージのクラス名設定してattachしてるの?
>>468 Box2 = Box1じゃ参照変えてるだけじゃん。
個別に使うならインスタンスはそれぞれ作らないとダメだろ。
>>468 それでもダメだと思う。mc1 は既に Box1 の表示リストに入ってるわけだから
Box2 の表示リストに追加した時点で Box1 の表示リストから削除される、はず。たぶん。
Box2 用に mc2 を作って追加するのが妥当じゃないかな
タイムラインを使用しない用途の Sprite に MovieClip 入れる意味は分からないけど。
あと
>var Box2:Sprite = new Sprite();
>Box2 = Box1 ;
new Sprite() する意味がないよ
少し基礎を勉強した方がいいと思う。まぁ これは余計なお世話ですんまそん
474 :
448 :2008/01/23(水) 21:16:34 ID:EbM82dea
>>459 レス有難うございます。 ムービークリップの現在位置と求めたい中心点の位置から、距離と角度の答えを導き出せれば良いと理解しました。
と言う事で、これから色々と調べてみようと思います。
もし簡単に答えが導き出せる方法が有りましたら、レスをお願いします。
475 :
465 :2008/01/24(木) 10:00:54 ID:LThmjL0A
>>470-471 すいません。くだらないミスでした
attachMovieじゃなくてcreateEmptyMovieClipしてました。
attachMovieに変えたらエラーがぼこぼこ出てくれて
動作するようになりました。
476 :
Now_loading...774KB :2008/01/24(木) 14:16:12 ID:og+9I2dQ
なあ… 疑似乱数の精度を上げたいんだけど 他にもっといい方法ってある? //AS2 var d=new Date(); var d1= d.getMilliseconds(), d2=0, r=0; d2=Number( String( d1 ).substr( 0, 1 ) );//左から1桁目抽出 var t="";//trace確認用 for ( var i=0; i<=d2; i++ ){ r=Math.floor( Math.random()*3 );//0〜2 t += String( r ); } trace(t+" 番号:"+r);
477 :
Now_loading...774KB :2008/01/24(木) 19:19:37 ID:dYw7AMLg
AS3.0での質問です。 package { import flash.events.Event; import flash.events.MouseEvent; import flash.display.MovieClip; public class ball extends MovieClip { //ボールの移動スピード public static var moveSpeed:Number = 1.5; //コンストラクタ public function ball() { this.addEventListener(Event.ENTER_FRAME, move_stage); } function move_stage(event:Event):void { this.x -= moveSpeed; } function onClick(event:MouseEvent):void { moveSpeed = 0; } } } 上のクラスで複数のボールを右から左に動かす事、そして、どれかひとつをクリックしたら全部の動きを止めるところまではできたのですが、 止めた後に全てのボールを20px右に動かす方法がわかりません。 ご教授願えたらと思います。
478 :
468 :2008/01/24(木) 19:51:31 ID:0az1LA+T
>>471-473 アドバイスありがとうございました。
結局、Box2用に同じMCを作って入れる事にしました。
見よう見まねでやってるので他の人から見るとヒドイのかもしれないです。
基礎が判りやすいサイトや本があればと思います。
Flex2でゲーム作成中です。 変な質問なんですけど、URLLoaderでテキストファイルを読みこんだときって、改行コードが勝手にかわったりしませんよね・・・? なぜか下記の状態になってしまうのですが、これって何が壊れてるんでしょうか(´・ω:;.:... サクラエディタで、読み込むファイル(test.txt[UTF-8、CRLF])を作成 ↓ URLLoaderを使ってテキストファイルを読み込み ↓ 読み込んだデータに対して、 indexOf("\r\n") すると -1。 でもなぜか indexOf("\r\r") が 7 とか・・・。 確かに7の位置には改行が2つあるのですけど。 教えてエスパーさん・・・
480 :
Now_loading...774KB :2008/01/24(木) 21:10:51 ID:US3tihm8
Flex2についての質問です。
Applicationコンテナの背景色をボタンをクリックした時に変更したいです。
−エラー内容−
ReferenceError: Error #1056: comptest のプロパティ backgroundColor を作成できません。
−ソースコード−
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute" backgroundColor="#000000">
<mx:Script>
<![CDATA[
private function onRemove():void {
mx.core.Application.application.backgroundColor="#FFFFFF";
}
]]>
</mx:Script>
<mx:Button id="button1" x="81" y="95" label="ボタン" click="onRemove()"/>
</mx:Application>
どなたか、よろしくお願いします
>480 わたくし初心者ですなのが、やってみたらできたので書きます。 エラーメッセージのとおり、backgroundColorはプロパティではないのでそのまま変えられないだけだと思います。 スクリプトの内容を下記のように変えれば実行できました。 this.setStyle("backgroundColor","#FFFFFF");
482 :
Now_loading...774KB :2008/01/24(木) 22:45:50 ID:5egpoJT2
>>481 ありがとうございました。
私も成功しました。
setStyle関数はこういうときに使うのですね。
Styleもプロパティだと思っていましたorz
483 :
Now_loading...774KB :2008/01/24(木) 23:28:37 ID:4oqiKR+S
AS2での質問です。 「メイン.swf」っていうファイルと「部品.swf」っていうファイルがあります。 部品ファイルのライブラリには識別子を「効果音」ってしたsound.wavが入っていて、 スクリプト側からattachSound("sound");としていると以下の問題が・・・ main.swfからloadFileでbuhin.swfを呼び出す。 →main.swfで音が鳴らない(buhin.swfの単品実行では音はなる) おそらくattachSoundのときにmain.swf側のライブラリからsoundを探していると思うのですが これは仕様でしょうか?それともどうにかして変更する事ができるのでしょうか。 できればmain.swfのライブラリに含めるのは避けたいのですが、 上手にbuhin.swf側のライブラリからattachSoundする方法をどなたかご教授いただけませんか?
>>477 生成時にArrayBall.push( new ball() );こんな感じで参照を保持しておいて
クリックした時にfor文でArrayBall[num].x += 20みたいなループさせるとか
485 :
Now_loading...774KB :2008/01/25(金) 01:01:36 ID:SDJPp47G
>>477 function onClick(event:MouseEvent):void {
this.x += 20;
moveSpeed = 0;
}
じゃ、だめなのか?
質問です 画像が左から右へ拡大しながら表示されていくアニメーションを作りたいのですが、 方法がわかる方、方法が載っているサイトをご存知の方、それっぽいFLASHを使ったサイトをご存知の方、 助けてください… ※DisplacementMapFilterでできそうな気がするんですが、仕組みが理解できないです... 以下のようなイメージです −−−−−−−−−− ↓ >−−−−−−−−− ↓ _ _>−−−−−−−− ↓ ___ ___>−−−−−− ↓ _______ _______>−−
>>476 何を基準に、今の精度では問題があると判断してるの?
それ以前の問題もあるような……。
>>479 試してみたけど、indexOf("\r\n")でその位置が、indexOf("\r\r")で-1になるよ。
ごめん。わからない。
>>483 AS2にLoadFileなんてあったっけ?
MovieClipLoaderを使うと出来るよ。
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function(target_mc:MovieClip) {
var sound:Sound = new Sound(target_mc);
sound.attachSound("sound");
sound.start();
};
loader.addListener(listener);
loader.loadClip("buhin.swf", _root.createEmptyMovieClip("mc", _root.getNextHighestDepth()));
>>485 それでは一つのボールしか動かないのでは?
>>486 画像の位置とscaleを変えていくだけじゃ駄目なのか?
>>476 メルセンヌツイスタ辺りを自分で実装したらどうだい?
489 :
Now_loading...774KB :2008/01/25(金) 18:58:33 ID:Ie12CYk6
AC2で質問です。 HTMLのファイル参照からファイル名を取ってきて それをactionscriptの変数に渡したいのですがどうやればいいでしょうか? 初歩的なことだと思いますが、検索してもなかなかいい方法が見つからないので 誰かわかる方がいたらレスお願いします。
最近ASを自力で組み始めた初心者ですが FlashPlayerExって最初と最後のフレームのstopと keyDown,keyUpが効かなくね? enterFrame下にKey.isDownとか入れれば大丈夫だけど
純正でもないソフトのことなんか知るかよ
>>489 すまんが、言ってることがよくわからん
htmlファイルを読み込んでそのリンク先を取得して、それをswfに渡すって事か?
具体的にやりたいことを書かないとレスしようがないぞ
493 :
Now_loading...774KB :2008/01/26(土) 00:56:41 ID:hIui/Goy
CS3、AS3で質問です。 ●に○が触れた時、●が■になるというものを作りたいのですが、 if(●.hitTestObject(○)){ ★★★(); }else{ ★★★(); } } 上の★の部分には何を入れればいいのでしょうか どなたか回答お願いします。
494 :
Now_loading...774KB :2008/01/26(土) 02:32:09 ID:ZwepRlu8
>>489 たぶん、言いたい事はわかった。
たとえば、HTMLで「テスト文字列」って文字列を
FLASHの変数(仮にtmpStr ) に「テスト文字列」を入れたいって事だよね?
FLASHの変数に代入するには、「パラメータ」を使うと便利ですよ
この頃はSWFObject(Flashに便利なJavascript)ばかり使ってるので、「パラメータ」の使い方は忘れてしまったんですが、たしか
HTML:
○○.swf?tmpStr=テスト文字列
みたいな感じ
詳しくは、↓の人が解説してくれるはず
>>489 彼がやりたいのは
フォームのfileから参照したファイル名を
FLASHから取得したいってことだべ。
PHPの$_FILES相当のことが。
496 :
Now_loading...774KB :2008/01/26(土) 03:47:38 ID:ZwepRlu8
>>489 >>495 なるほど。。。
HTMLでとってきてるってことは、PHPでFlashにパラメータとして渡すか、javascriptで渡すみたいな感じですかねぇ〜
MXです キーボードの"→"が押されたときにシーン1を次のフレームへ進ませたいです asのレイヤーを作って以下のようにフレームに書き込みました if (Key.isDown(Key.RIGHT)){ _root.nextFrame(); } 全く反応しません ご教授お願いします
498 :
497 :2008/01/26(土) 06:35:37 ID:dSOvbidE
stop(); if (Key.isDown(Key.RIGHT)){ _root.nextFrame(); } 少し訂正 よろしくお願いします
stop(); this.onEnterFrame = function(){ if (Key.isDown(Key.RIGHT)){ trace("AA"); _root.nextFrame(); } } もしくはリスナー使う
500 :
497 :2008/01/26(土) 06:53:02 ID:dSOvbidE
>>499 ここで数時間悩んでいたのですが、動きました
本当にありがとうございました
またよろしくお願いします
497ですがもう一つだけお願いします mcの"meter"を左端は動かさずにwidthだけ 1フレーム ■■■ (width100) ↓ 10フレーム ■■■■■■ (width200) このようにモーショントゥイーンのように変えたいのですが 1〜10のフレームごとにasレイヤーのフレームに meter1._width = meter1._width + 100/10; と書いたところ ■■■ (width100) ↓ ■■■■■■ (width200) このようになってしまいました 白丸の中心点を左端に持っていっても変わりません どうしたらいいのでしょうか
>>498 コードはいつでも実行されるわけじゃない
enterFrameやkeyDownを使わないでそのまま書くと
タイムラインがそのフレームに到達してif判定したら
その1回で終わりとなる
>>493 ●の箇所には参照を持つオブジェクトを設定する。
private var △:Object;
コンストラクタ?
{
△ = ●
}
if(△.hitTestObject(○)){
// hitTestObjectを実行するオブジェクトを■に変更
△ = ■;
}
>>487 479です。
遅くなりましたが、試していただいてありがとうございました。
他の環境ではうまくいっているということなので、自分の環境のなにかがぶっ壊れているのだろうと思います。。。
とりあえずCRLFでなければ正常に読み込んでいるので、
なかったことにしますヽ(`・ω・´)ノ
>>501 ■図形のシンボル編集画面で
■の左端が中心にくるようにする
506 :
493 :2008/01/26(土) 15:36:52 ID:C3qLWq3W
>>503 回答ありがとうございました
助かりました
507 :
Now_loading...774KB :2008/01/26(土) 18:21:03 ID:hqpov2bp
489です javascriptで自己解決しました。 ありがとうございます
var point1 = 100; var point2 = 200; var point3 = 300; var i; for(i; i<3; i++){ trace("point" + i); } --実行結果 100 200 300 このようなことはできないのでしょうか 環境MXです
510 :
509 :2008/01/26(土) 20:13:01 ID:dSOvbidE
すみません訂正です var point0 = 100; var point1 = 200; var point2 = 300; var i; for(i = 0; i<3; i++){ trace("point" + i); } --実行結果 100 200 300
511 :
Now_loading...774KB :2008/01/26(土) 20:15:29 ID:ZwepRlu8
こうかな var point:Array = new Array(); point = [ 100 , 200 , 300 ]; for( var i:Number = 0 ; i < 3 ; i++ ){ trace("point"+point[ i ] ); } すっごい適当だから気をつけて!!
513 :
512 :2008/01/26(土) 20:23:33 ID:ouQHzXnn
と思ったら上に既にありましたね すみませんでした
>>510 trace( this["point"+i] );
でアクセスできるが、
普通は理由が無い限りは上のように配列使う。
というか、基礎すっとばして悩むぐらいなら
基礎から勉強してください。
515 :
509 :2008/01/26(土) 20:31:15 ID:dSOvbidE
>>511 >>512 できました配列使えばいいんですね 思いつきませんでした
ID赤くなるまでお付き合いいただきましてありがとうございました
516 :
509 :2008/01/26(土) 20:32:19 ID:dSOvbidE
fusekit で、_widthだけ、sizeToを行いたいんだが…。どうすればいいんだ??
mxで actionscriptでテキストフィールドの生成ってできますか?
520 :
Now_loading...774KB :2008/01/27(日) 12:56:28 ID:FlGi4i3T
質問です。 FLA2004pro使ってメニュー画面を作っています。 利用者がキーボードの0〜9までのボタンを使って操作し、コンテンツを開きます。 イメージ的には縦に五つメニューが並んでおり、2or8でメニューが上下移動、4or6でコンテンツが横移動というクロスバーです。 メニューとコンテンツは別mcにまとめて_rootに置かれています。_rootで動いたpush_x,push_yの変数を元にコンテンツ説明をフィールドの外から持ってきます。 コンテンツ説明にダイナミックテキストを使用したいのですがそれがどうしてもうまくいきません。 変数:push_x, push_y,(xは4,6キーで変数を±させ、yは2,8キー) var sii_txt11 = "こんにちは"; var sii_txt12 ="Hello";//……sii_txt55まで続く メニュー、コンテンツの数はそれぞれ五個。 mc内のダイナミックテキスト「giko_txt」にコンテンツに対応させた文章を表示したい。 //mc内のAS for(i=1;i<=5;i++){ if(../:push_x == i){ for(j=1;j<=5;j++){ if(../:push_y == j){ giko_txt = "sii_txt" add i add j; } } } } *mc内のモーションは問題ないので省かせていただきました。 変数はちゃんと変動していたのを確認しました。 ひょっとして【=】にはfor文のiや変数による代入が使えないのでしょうか? それとも単に入力ミスなのでしょうか。ご教授よろしくお願いします。
521 :
519 :2008/01/27(日) 13:38:19 ID:PWFdG4Xc
自己解決しました createTextField使えました
>>520 if判定が良く分からないけどgiko_txtに文字列が入ってないという事かな
rootに変数定義してるなら
giko_txt = _root["sii_txt" + i + j]で文字列入ると思うけど・・・
2,8キーとかaddとかって、携帯用のflashなのか?
524 :
Now_loading...774KB :2008/01/27(日) 16:16:11 ID:2x4uDF1V
すみません、質問させてください。 フラッシュ8を使っています。 AサーバのフォルダにおいたAswfから、そのswf本体の置いてあるフォルダ内の xmlや画像などをローカルパスで読み出して、文字や画像を表示するようにしています。 そのAswfを別の場所(例えばBサーバにおいたHTML)で読み出すと、 Aswfは自分の置いてあるAサーバのフォルダではなく、そのHTMLがおいてある Bサーバのローカルフォルダから、xmlや画像を探そうとするようです。 A.swfの中のパスを、Aサーバの絶対パスにすれば問題ありませんが、 このAサーバやフォルダは頻繁に変わる可能性があり、できればBサーバや 他のサーバから読み出した場合でも、A.swfそのものが置いてある自分の ローカルフォルダ内から読み出すようにしたいのですが、 この場合、どう記述すれば良いのでしょうか? 完全素人でスクリプトのどの部分が読み出し命令なのか分からない状態です。 これをスクリプトに追加すればOKのような指定の仕方はあるんでしょうか? 初歩的な質問で意味が通じないかもしれませんが、よろしくおねがいします。
525 :
520 :2008/01/27(日) 21:01:57 ID:FlGi4i3T
>522 なるほど、配列を使うのですね。ありがとうございます、早速やってみます。 >523 すいません、記述が不足していましたね。そうです、携帯電話向けです。
FLASH8を使用しています、ASは2.0です if文で「配列の中身が全てtrueになったら実行」という処理をする時 ↓今このようにしていますが、もっとスマート?な書き方がありましたら教えて頂けませんでしょうか if(yas[0] == true && yas[1] == true && yas[2] == true && yas[3] == true && ...yas[11] == true)
>>526 Flg = true;
// undifinedかfalseがあったらFlg=false
for( num = 0; num < yas.length; num++ ){
if( yas[num] == undifined || yas[num] == false ){
Flg = false;
break;
}
}
if( Flg ){
// 処理
}
こんな感じ?
もうちっとスマートに書けるね
俺も考えてみた ただundefinedは無視しちゃってるけど temp = yas; temp.sort(); if(temp[0]){ trace("hit"); }
あー こうすりゃいいのか temp = yas; temp.sort(); if(temp[0] && temp[temp.length - 1]){ trace("hit"); }
flex3 as3で質問です。
複数のテキストフィールドを動的に生成し、
ムービークリップのイベントで動かしたいのですが方法が分かりません。
インスタンス名を指定してプロパティを変更したし
removeChildで削除したりの操作をする方法はありますか?
もしくは、MyTextField[i]みたいな感じで、
変数名を指定することは出来ないでしょうか?
他にも方法がありましたらご指南頂ければと思います。
よろしくお願いいたします。
>>527 質問してる奴の解答であれですが、
boolean以外の例外が無いのであれば。
if(yas.join("").length == 44)
>>527 俺も考えてみた
for (var num:Number = 0; num < yas.length && yas[num] == true; num++)
{
}
if (num == yas.length)
{
//処理
}
。。。
536 :
Now_loading...774KB :2008/01/28(月) 13:43:57 ID:4gM9CR16
ご教授示願います。AS2です XMLファイルの文字列を二次元配列に一覧状に入れたいのですが myXML.onLoad = function() { var myNum:Number = 6; var XPathStrings:Array = new Array("XPath式1","XPath式2","XPath式3","XPath式4"); var textArr:Array = new Array(); for(var i:Number=0; i<myNum; i++) { textArr[i] = new Array(); } for(var ia:Number=0; ia<XPathStrings.length; ia++) { textArr[ia][0] = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]); for(var ib:Number=0; ib<myNum; ib++) { ※ } trace(textArr[0][0]); trace結果:文字列1,文字列2,文字列3,文字列4,文字列5,文字列6 ←(XPath式1で取得した文字列郡) trace(textArr[1][0]); trace結果:文字列7,文字列8,文字列9,文字列10,文字列11,文字列12 ←(XPath式2で取得した文字列郡) 今このような状態で、※の所で textArr[ia][ib] = textArr[ia][0].split(","); など打ってみましたが、結果はundefinedと出て駄目でした 最終的には textArr[0][0]=文字列1 textArr[0][1]=文字列2 textArr[0][2]=文字列3 textArr[1][0]=文字列7 textArr[1][1]=文字列8 textArr[1][2]=文字列9 のように配分したいのですが、どういった処理や訂正が必要なのでしょうか、宜しくお願いします
>>536 String.split(",")で分割された配列が返ってくるから、
for(var ia:Number = 0; ia < XPathStrings.length; ia++) {
textArr[ia] = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]).split(",");
}
でいいんじゃね?
この場合
for(var i:Number = 0; i < myNum; i++) {
textArr[i] = new Array();
}
は不要か
538 :
536 :2008/01/28(月) 14:24:51 ID:4gM9CR16
>>537 ありがとうございます、上のスクリプトを書き換えてやってみました
myXML.onLoad = function() {
var myNum:Number = 6;
var XPathStrings:Array = new Array("XPath式1","XPath式2","XPath式3","XPath式4");
var textArr:Array = new Array();
for(var ia:Number = 0; ia < XPathStrings.length; ia++) {
textArr[ia] = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]).split(",");
}
trace(textArr[0]); trace結果:undefined
trace(textArr[1]); trace結果:undefined
trace(textArr[0][0]); trace結果:undefined
と訂正してみましたが結果はundefinedでした・・・
>>538 そもそもmyXML.onLoadは呼び出されているのか?
>>538 すまん、XPathAPI.selectNodeListに関して勘違いしてた
配列が返ってくるんじゃsplitしてもダメだわな
とりあえず、
var tmpArray:Array;
for(var ia:Number = 0; ia < XPathStrings.length; ia++)
{
tmpArray = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]);
for(var ib:Number = 0; ib < myNum; ib++)
{
※
}
}
って感じで、仮の配列に返り値を入れてから中身を取り出すとか?
※のところはtmpArrayの中身に応じて書く、と
>>538 構造が複雑なものは、処理を一つずつ分割して考えるのがいいよ。
var nodeList:Array = new Array();
for (var i:Number = 0; i < XPathStrings.length; i++) {
nodeList[i] = XPathAPI.selectNodeList(this.firstChild, XPathStrings[i]);
}
var textArr:Array = new Array();
for (var j:Number = 0; j < nodeList.length; j++) {
textArr[j] = nodeList[j].sprit(",");
}
for (i = 0; i < textArr.length; i++) {
for (j = 0; j < textArr[i].length; j++) {
trace(textArr[i][j]);
}
}
ごめん。最後のループを間違えた。 for (var i:Number = 0; i < textArr.length; i++) { for (var j:Number = 0; j < textArr[i].length; j++) { trace(textArr[i][j]); } } ループ用の変数はそのブロックでだけ有効だったんだよな。
544 :
Now_loading...774KB :2008/01/28(月) 16:30:27 ID:CVYVRIJz
おしえてください。 スプライトをクリックすると関数呼び出すスクリプトをかきました。 ところが、スプライトをドラッグして、マウスをドロップしたときにも、 クリック判定がでてしまいます。 回避方法を教えてください。たのみます。 環境は、 actionScript 3.0 flash9 です。
質問させて下さい。 ユーザーに手書きで図形を書かせ、 それが丸なのか四角形なのか三角形なのかを判別したいのですが どのようなアルゴリズムが考えられますでしょうか?
547 :
536 :2008/01/28(月) 17:47:07 ID:4gM9CR16
>>539-543 ご教示ありがとうございました、
>>541 のソースを参考に色々とやってみた所
for(var i:Number = 0; i < setNum; i++) {
textArr[i] = new Array();
}
var tmpArray:Array;
for(var ia:Number = 0; ia < XPathStrings.length; ia++) {
tmpArray = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]);
for(var ib:Number = 0; ib < setNum; ib++) {
textArr[ia][ib] = tmpArray[ib];
}
}
trace(textArr[0][0]);
trace(textArr[1][0]);
trace(textArr[2][0]);
trace(textArr[3][0]);
myXML.onLoad外でtextArrをトレースするとundefindが出たりとまだ改良の余地がありますが、何とか配分はされたようです
XMLも二次元配列も今回初めて扱ったのでとても勉強になりました、ありがとうございました
548 :
Now_loading...774KB :2008/01/28(月) 18:41:00 ID:xkAum0Tt
>>545 どうも。こんな感じです。
//マウスイベント
obj.addEventListener(MouseEvent.CLICK, onClick);
obj.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
obj.addEventListener(MouseEvent.MOUSE_UP, dragStop);
//クリック
function onClick(event:MouseEvent):void {
trace("ハローワールド");
}
//ドラッグ開始
function dragStart(event:MouseEvent):void {
obj.startDrag();
}
//ドラッグストップ
function dragStop(event:MouseEvent):void {
obj.stopDrag();
}
ドラッグアンドドロップのドロップのときに、ハローワールドがでてしまいます。
549 :
Now_loading...774KB :2008/01/28(月) 19:17:33 ID:jkGL187c
質問したいことが2点あります。 hoge1とhoge2はムービークリップのインスタンス名です。 onEnterFrame = function(){ test_function(hoge1); test_function(hoge2); } function test_function(hoge) onEnterFrame = function(){ if(hoge._alpha > 100){ hoge._alpha += hoge._alpha+10; } } } これを実行するとhoge1とhoge2がゆっくり出てくる予定なんですが、 hoge2だけ実行されてhoge1は実行されません。 2回目のonEnterFrameの下に trace(hoge); を入れるとhoge2が繰り返されて、hoge1は出てきません。 これは何故でしょうか?
>>548 こんなかな?ドラッグした距離が短かきゃクリックとして判定してる。
timerで時間で判定してもいいかもね。
//マウスイベント
obj.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
obj.addEventListener(MouseEvent.MOUSE_UP, dragStop);
//距離測定用
var point ={x:0,y:0};
function onClick(event:MouseEvent):void {
trace("ハローワールド");
}
//ドラッグ開始
function dragStart(event:MouseEvent):void {
point.x=event.stageX; point.y = event.stageY; //距離記録
obj.startDrag();
}
//ドラッグストップ
function dragStop(event:MouseEvent):void {
obj.stopDrag();
//距離測って2より小さければonClick呼ぶ
var dx = point.x-event.stageX; var dy = point.y-event.stageY;
var dist = Math.sqrt(dx*dx+dy*dy);
if (dist<2) onClick(event.clone() as MouseEvent);
}
551 :
Now_loading...774KB :2008/01/28(月) 19:23:06 ID:jkGL187c
2点目 hoge1とhoge2はムービークリップのインスタンス名です。 var hoge_array:Array = ["hoge1","hoge2"]; onEnterFrame = function(){ for(i=0;i<2;){ test_function(hoge_array[i]); } function test_function(hoge) onEnterFrame = function(){ trace(hoge._alpha); } } これを実行するとundefinedが出ます。 test_function(hoge1); とかにすると正常に実行されます。 配列だと無理なのでしょうか? すいませんがよろしくお願いします。
>>549 >>551 test_functionのところ文法がおかしくないか?
onEnterFrame = function()とかいらんでしょ
function test_function(hoge:MovieClip):Void{
if(hoge._alpha > 100){
hoge._alpha += hoge._alpha+10;
}
}
}
>>550 横からすんません 最後の
if (dist<2) onClick(event.clone() as MouseEvent);
で、event をそのまま渡さずに clone() して渡している理由を教えて下さい
俺ならそのまま event 渡しちゃいそう・・・何か不味いのかな、と思って
>>553 そのままでもいいんでない?
参照のチェーン作るのがやだから念のため別物にしただけ。
555 :
551 :2008/01/28(月) 19:57:56 ID:jkGL187c
>>552 確かに…2回指定する必要なかったので一つ消しました。
で、ソース書き直します。
var hoge_array:Array = ["hoge1","hoge2"];
onEnterFrame = function(){
for(i=0;i<2;){
test_function(hoge_array[i]);
}
function test_function(hoge:MovieClip):Void{
trace(hoge._alpha);
}
>>549 の両方実行されないってのは解決しましたが、
配列でインスタンス名を指定するのが上手くいきません。
test_function(hoge1);
test_function(hoge2);
これは正常に動きます。
test_function("hoge1");
test_function("hoge2");
これは型が違うとエラーが出ます。
556 :
Now_loading...774KB :2008/01/28(月) 20:09:12 ID:jkGL187c
あ、onEnterFrameの「 } 」つけ忘れてますが本来はあります。
文字列渡してどうすんだよw参照渡せ
558 :
Now_loading...774KB :2008/01/28(月) 20:13:55 ID:jkGL187c
なんか色々ボロボロで申し訳ない… > for(i=0;i<2;){ for(i=0;i<2;i++){ あとtraceした結果がundefinedです
>>557 ジーザス
こーゆーことだったんかーーーーー!
var hoge_array:Array = [hoge1,hoge2];
ありがとうございまんた。
>>554 レスありがとう
ふむふむ 気分的なものなのか
561 :
536 :2008/01/28(月) 21:52:31 ID:T+WVjTiZ
度々すみません、ソースは殆ど536の物と同じです setXML.onLoad = function() { var textArr:Array = new Array(); var tmpArray:Array = new Array(); var setNum:Number = 6; for(var i:Number = 0; i < setNum; i++) { textArr[i] = new Array(); } var XPathStrings:Array = new Array("XPath式1","XPath式2","XPath式3","XPath式4"); for(var ia:Number = 0; ia < XPathStrings.length; ia++) { tmpArray = XPathAPI.selectNodeList(this.firstChild, XPathStrings[ia]); for(var ib:Number = 0; ib < setNum; ib++) { textArr[ia][ib] = tmpArray[ib]; } } trace(textArr[0][0]); trace結果:文字列1 } trace(textArr[0][0]); trace結果:undefined onLoad内で設定されたtextArr配列をonLoad外で使用する方法などありますでしょうか・・・
外で宣言するか、var取る
function lo() { this.enabled = false; } mona1.onRelease = lo; とか、ムービークリップ.onRelease = 処理関数; みたいな書き方で、this以外に処理関数に引数を送る事はできるんですか?AS2です。
どなたかご教授お願いします。Flexビルダー2です。 ニコニコ動画みたいな感じでcanavsの中に書き込まれた文字が右に流れていくプログラムなんですけど、 InputText()が実行されると指定された位置にlabelが表示されて2ピクセルずつ左に流れていき、 画面外に消えたlabelは削除されるようになってるんですが… label.x=600 label.y=200でピクセル指定したものを%で書く事はできないですか? private function InputText():void{ var label:Label = new Label(); label.text = input.text; label.x = 600; ←これと label.y = Math.random() * 200; ←これです label.setStyle("fontSize", Math.random()*20 + 10); label.setStyle("color", Math.random()*0xFFFFFF + 0xFF000000); field.addChild(label); labelArray.push(label); input.text = ""; } private function onTick(evt:TimerEvent):void{ for each(var label:Label in labelArray){ label.x -= 2; if(label.x + label.width < 0) labelArray.splice(labelArray.indexOf(label,0),1); } }
>>563 よく分からんが、onReleaseに入れた関数に引数を渡したいと言う事かな
onReleaseを自分で呼べば渡せるけど…
mc.onRelease = function(text:String):Void
{
...
}
mc.onRelease("test");
566 :
Now_loading...774KB :2008/01/29(火) 09:24:31 ID:2zuwvYUb
>>550 ありがとう。
クリックとドラッグアンドドロップの判定は、
自作しなければならないと言うことですね。
タイムラインにあるムービークリップをランダムで表示させるas3での記述はないでしょうか? 初歩的な質問ですが教えてください。お願いします
Flash上で作ったXMLを、外部のテキストデータに書き出す方法はありませんか? 初心者で申し訳ありませんが、教えてください。 よろしくお願いします。
テキストデータやBGMデータを外部から読み込んでいるのですが デバッグ起動(CTRL+SHIFT+ENTER)で起動すると何故かIOエラーが発生します。 デバッグ時はカレントディレクトリの位置が通常起動(CTRL+ENTER)と異なるのでしょうか?
570 :
Now_loading...774KB :2008/01/29(火) 22:04:54 ID:jCULY7qR
playing = new Sound(new URLRequest(url)); channel = playing.play(); channel.addEventListener(Event.SOUND_COMPLETE, stopPlay); changeImage(imageStop); 以上のように音楽再生用の関数を書いてあり url には、MP3のアドレスが入っています。 ただ、そのアドレスはCGIで、ログイン済みであれば実MP3を、未ログインであれば空MP3を返すようにしています。 未ログインのときは、アラートを出すように分岐を加えたいのですが、空MP3の判定とかはできるんでしょうか? playing.bytesTotal を channel = playing.play(); の手前に入れても、毎回 0 のようでした(実MP3のときも)。
>>567 むむ?既にタイムライン上にあるんじゃ、表示されてるのでは?
隠すのはremoveChild(インスタンス)で、表示がaddChild(インスタンス)、
ランダムは、Math.random()でいけるから、一旦全部隠して、どれか表示だったら、
一旦全部removeChildして、1個だけaddChildとか?
//表示されてる物をしまっとく配列
var instanceList:Array = new Array();
//かくす
for(var i:int = numChildren-1;i>=0;i--)instanceList.push(removeChild(getChildAt(i)));
//どれか表示
addChild(instanceList[Math.random()*instanceList.length
>>0 ])
>>568 ないぜ!!なぜならローカルだったらXMLに限らず、何かを書きこめてしまうのは、
セキュリティ上まずいから。
CGIが使えるなら、XML.toString()とかで文字列化したのをPOSTすれば、あとはCGI側で
サーバには保存できるかもね。
>>570 読みこみ完了してからじゃないと、長さ測れないんじゃね?
SOUND_COMPLETEの時に読んでる関数の中で測ってみたら?
>>572 やっぱりできないのですね…
ありがとうございました。
CGI勉強してみます。
575 :
Now_loading...774KB :2008/01/29(火) 23:12:25 ID:xn91wdBg
flashで外部から読みんだテキストの指定した文字だけ actionscriptで見せなくする方法ってありますか??
いっくらでもあります
577 :
Now_loading...774KB :2008/01/29(火) 23:38:56 ID:xn91wdBg
本当ですか?? たとえばどんな書き方で消すことができますか? またどんなスクリプトを使用すればいいのでしょうか・・・。 初心者で本当に申し訳ありません・・・。
578 :
Now_loading...774KB :2008/01/29(火) 23:46:31 ID:sc1C40/9
FLEX2のDataGridの内容を知る方法はどうすればよいのでしょうか? 現在選択されてるやつはSelectedItem.フィールド名で判るのですが.. 1行目は何?2行目は何?...みたいに最後までループさせてとる事は可能ですか?
>>577 やりたいことが
文章中の「文字列」ではなく「特定の1文字だけ」を
「別の何かの文字で埋める」のではなく「消去したい」
という意味なら
moji = "すもももももももものうち";
trace( moji.split("も").join("") );
----------------------------
結果:すのうち
580 :
Now_loading...774KB :2008/01/30(水) 00:22:47 ID:O5JMXiWW
>>578 バインドさせてるデータプロバイダの方からとるべき
FLASH CS3 AS3.0での質問です 下記のようにテキスト読み込み完了時に処理を行なうように設定しています txtLoader.addEventListener(Event.COMPLETE, onLoaded); SWF単体で起動すると処理は正常に行なわれますが FLASHをHTMLに含めて表示すると何故かこのイベントが全く処理されません。 何かHTMLのコードに指定等必要なんでしょうか? ご教授頂きたいです。
>>581 まさか、エラー時の処理も書かずに
成功時の処理だけ書いて
「成功時の処理が実行されません!」
とか言って無いよな?な?
うわ、やなもん見た きも
584 :
Now_loading...774KB :2008/01/30(水) 02:00:00 ID:WUU/2zFH
>>579 ありがとうございます!!!
とてもためになりました!本当にありがとうございました〜!!
585 :
Now_loading...774KB :2008/01/30(水) 12:04:38 ID:GAeTpfFA
ダイナミックテキストでheightのサイズを大きくしたら 文字サイズでかくなったんだけど これって仕様? どうにかならんものかね エロい人教えて
ゆとり:でっかくしたらでっかくなりましたこれって仕様?
587 :
581 :2008/01/30(水) 12:24:35 ID:+1j2Ecrv
>>582 ナイスツッコミでした。
失敗時は「ファイルのロードに失敗しました」というメッセージを
テキストに表示していて毎回それが出てました。
問題は指定ファイルのパスでした。
HTML ※[]はフォルダ
[FLASH]-[●●●]-●●●.swf
-[text]-text1.txt
こんな階層だったのですがFLASHで「./text/text1.txt」と指定したのがまずかったのですね
HTMLからの相対パスになるとは盲点でした。
588 :
Now_loading...774KB :2008/01/30(水) 14:26:05 ID:1iTeKh97
ActionScript 2.0 です。 FLVPlaybackにflvファイルを外部のxmlに書かれた順番に 再生したいのですが、どなたか教えていただけませんか。 よろしくお願いいたします。
>>589 1から
いや-5くらいから教えてください
592 :
Now_loading...774KB :2008/01/30(水) 21:30:16 ID:W/h71kbu
FlexでコンパイルしたSWFを逆コンパイル出来るソフトはないでしょうか? Flareだと無理みたいです。
593 :
Now_loading...774KB :2008/01/31(木) 01:09:38 ID:WfqL9CH5
>>585 Flex2のLabelかなんかのソースみてたらHeightでフォントサイズ決定してたので
多分仕様だと思う
594 :
Now_loading...774KB :2008/01/31(木) 13:32:31 ID:mFalAdDN
現在MXpro使って携帯向けを作っています。 初歩的なことかもしれませんが教えてください。 ボタンアクションで現在選択中の変数1〜5を配列:XArray[1]にaddでどんどん加えていき、 XArray[1] == 2431となったとします。 この場合、同じボタンアクションで配列の中身を判別し、同じものがあればキャンセルし、 なければ加えるといったASはどのようにすればいいでしょうか? XArray[1] ==2431; 変数5を選択・・・XArray[1] == 24315; 変数2を選択・・・XArray[1] ==2431;(変化なし) 乗除算を使ったり、forやdo whileを使ってもみましたがうまく行きませんでした。 よろしくお願いします。
595 :
Now_loading...774KB :2008/01/31(木) 17:40:50 ID:jVu3zx4q
すみません。
初心者な質問なのですが
mapのiconにカーソルが乗ったらポップアップウィンドウが開き
ウィンドウ内のダイナミックテキストにiconの名前が表示される
というものを試しています。
-------------------------------------------------------
//「 icon 」にカーソルが乗ったらポップアップを表示
map.icon.onRollOver = function (){
PopUp(this._name);
}
//「 icon 」がクリックされたらHPを表示
map.icon.onRelease = function (){
getURL(this.url, _blank);
}
-------------------------------------------------------
1フレーム目のスクリプトに上記が書いてあるとき
iconのインスタンスに
-------------------------------------------------------
onClipEvent (load) {
this._name = "てすと"
this.url = "
http://www. 〜〜〜"
}
-------------------------------------------------------
というものを書いてみたのですが
URLは反応するのですが、名前がdefaltValueとなってしまいます。
どうやればポップアップに文字を表示できるでしょうか。
宜しくお願いいたします。
>>594 データは二次元配列じゃだめなの?
XArray[1] = new Array( false, false, false, false, false )
こんな風にフラグ持ってると楽な気がするけど。。。(携帯はできないのかもしれないが)
そのまま使うなら10で割って余りを比較するか
文字列にしてsplitして1文字ずつ比較するかみたいな方法とればいいと思う。
>>595 _nameじゃなくてpopnameとか変数作ってみては?
ロード時に設定してるならメンバー変数にしなくていいと思う。
597 :
Now_loading...774KB :2008/02/01(金) 01:43:27 ID:ZXSPepuJ
>>596 >>595 です。
変数の調整で今正常に動作するようになりました。
ありがとうございました!
テスト
599 :
Now_loading...774KB :2008/02/01(金) 18:15:15 ID:eUtpVZDy
くだらない質問かも試練。 on(release){ test._rotation = 190; trace(test._rotation); } -170の結果が返ってくる。 これってどうにかならんもんかね? どっか一時的に変数入れるしかない?
>>599 AS2.0なら、_rotationの値は-180から180の範囲をとる
範囲外の値は範囲内になるよう変換される
他のではどうなるか知らないけど
片っ端から数値入れてみりゃいいだろうに
>>599 そういうもんだよ。0〜360の値が欲しいなら、
360足して360で割った余りを表示すればいいよ
trace((test._rotation+360)%360)
603 :
Now_loading...774KB :2008/02/02(土) 12:01:58 ID:TlO9WaIM
データ型Objectの概要が上手く掴めません これまで変数に入れるのが数値だったらNumber、文字列ならString、配列ならArray、MCだったらMovieClip この辺で殆どやってきたのですが、最近読むソースがObjectを多様しているのが多く混乱してしまいます オブジェクト変数[0] = 20 と配列の様な事もできたり オブジェクト変数.na = "2ch" とMCの様な事もできたり リスナーに使ったり・・・こういった事をオールマイティーに対応しているデータ型と考えればいいのでしょうか それとリスナーの様な、こんな処理にはObjectが適用or不可欠といった処理などありますか?
>>603 まずは「名前の付けられる配列」という感覚で使うといいかな。構造体とかハッシュテーブルとか言われてる。
配列が[1,2,3]なら、構造体は
var o={
hoge:1,
piyo:2,
fuga:3
}
trace(o.hoge)
と、名前付きで値をしまっとける。値にアクセスするには、object.名前か、object[名前]でアクセスできるというルール。
ただ、データ型指定できないんだよね(指定したい場合は「クラス」を使う事になる)。
>オブジェクト変数[0] = 20 と配列の様な事もできたり
これ誤解。その0は数字のゼロじゃなくて、文字列のゼロとして扱われてる。名前が「ゼロ」なだけ。
つまり、「オブジェクト変数["0"]=20」って事。配列のインデックス番号とは意味が違うよ。
>>603 >オールマイティーに対応しているデータ型。
これで合ってる。というか、なんでも「できてしまう」データ型と言った方がいいかも(っつーか、すべてのクラスの元)。
Object型ってのは、1冊のノートの自由なページに落書きして、
そこに自分ルールで名前を付けたポストイットにでも挟んで置いておけるような物。
メモしておいたノートの内容にアクセスしたければ、ポストイットの名前を頼りにページを開いて、
そこに書いてある事を取り出す。この時値が書いてあれば値を、関数だったら関数を取り出す。
var o={
_name:"HOGE",
sayName:function(){return this._name;}
}
trace(o.sayName())
そんだけ。
606 :
Now_loading...774KB :2008/02/02(土) 14:36:55 ID:O/HtUlkt
基本的にObject型は原始的なハッシュテーブルで、 キーをuintに制限して、列挙可能にしたのがArray という考え方でおk perlやJavaScriptのようなプロトタイプベースの言語に 共通した考え方かと
>>604-606 解説ありがとうございます、まだ解釈できたような・・・できてないような感じです
プログラムの様な物を扱ったのはASが始めてなので、こういった詳しい構造の勉強もしてみた方がいいかもしれませんね
ありがとうございました
別で持ってきた画像に疑似的3Dのような描画が出来るようなコードが組みたいのですが どう組んだら良いのか分かりません…。 例えばビルの絵に沿って奥行きが出るように描画、といったものです。 参考サイトなども見つからなくて検討もつかない状態です…。 どのようにコードを組んだらいいのでしょうか。 くだらない質問で申し訳ないですが、よろしくお願いします。 ASはAS2.0を使用しています。
まず超高度な人工知能を作る
AS3、Flex3で質問です。
指定した枠内に複数のオブジェクトを表示させたいのですが、
複数のオブジェクトに同時にmaskをかけることは出来ますでしょうか?
オブジェクトが一つの間はマスクが掛かっているのですが、
二つ目のオブジェクトを生成しマスクを掛けた時点で、
一つ目のマスクが外れてしまい、どうしていいものか悩んでいます。
よろしくお願いいたします。
>>608 全然分かっていないのですが、一から書くのはしんどそうなので
ありもののライブラリを使ってみては?
そーゆーことでは無かったらごめんなさい。
ここで聞いていいかどうか分からないけど XPath4As2 で特定の XML 要素にアクセスしたい時、例えば↓の場合 <hoge:test xmlns:test="hogehoge"> <hoge:ng no="1" /> <hoge:ng no="2" /> <hoge:ng no="3" /> <hoge:ng no="4" /> </hoge:text> みたいに名前空間が指定してある場合どうパスを書けばいいんですかね? 名前空間が無ければできるんですけど…
612 :
611 :2008/02/03(日) 14:39:34 ID:gf2M+dzi
自己レス。接頭辞付で指定するんですね。 XPath.selectSingleNode(this, "hoge:test/hoge:ng[@no='1']"); これでアクセスできましたが…、接頭辞ではなく 名前空間 URI で指定は 出来ないんですかね?
613 :
Now_loading...774KB :2008/02/03(日) 14:57:35 ID:YmnAzNog
オールフラッシュの企業ページで、メニューボタンを押すとローディングバーが出てそのページのswfを読み込むタイプで 出てきたローディングバーの説明を見る限り、その表示するswfやその中で使う画像・XMLも一気に読み込んでいるようなのですが あれは読み込む側(メインメニュー等があるメインswf側)でswf・画像・XMLを一気に読み込み、読み込んだswf側に そのデータを送って処理しているのでしょうか? 自分が今までやっていたのは、メニューボタンを押すとそのページのswfのみを読み込む形の物で その後の学習で画像やXMLの読み込みを知ったので、できれば先のページのように纏めて読み込むような形にしたいのです また、メインのswf側から読み込んだswfにデータを送るにはどうすればよいのでしょうか ASは2.0、FLASH8使用です、よろしくお願いします
614 :
611 :2008/02/03(日) 15:03:21 ID:gf2M+dzi
更に自己レス。初めにソースを見てればよかったorz XPath.selectSingleNode(this, "//*[namespaceURI() = 'hogehoge']"); namespace-uri ではなく namespaceURI っていう関数を使用するんですね。 これで名前空間で絞り込めると。
615 :
608 :2008/02/03(日) 15:09:12 ID:vOuz0hS3
返事遅れました。
>>611 ありもののライブラリとはなんでしょうか?;
ググったのですが、いまいち分からなかったです…。
初心者で申し訳ありません。
616 :
Now_loading...774KB :2008/02/03(日) 17:09:56 ID:QHzn8uWo
AS2.0のFlash8で、マウスがボタンに乗っても、マウスポインタの形を変えない方法ってある?? enabled使うとボタンの効果が消えてしまうんだ。 誰か教えてエロイ人。
useHandCursor
Textのスタイルにa:link、a:hoverを追加したいのですが、
CSSを使ったりしてもできませんでした。
TextFieldならStyleSheetを生成して可能なことがわかりましたが、
別問題があり、Textでないとだめだとわかりました。
どなたかわかる方がいましたら教えてください。よろしくお願いします。
以下が、適用したいソースです。
<mx:Text width="100%">
<mx:htmlText>
<![CDATA[<a href='
http://www.adobe.com '>yest</a>]]>
</mx:htmlText>
</mx:Text>
620 :
Now_loading...774KB :2008/02/03(日) 19:31:07 ID:MtbAutbM
>>619 TextもLabelも、htmlTextで使えるタグの種類はかなり限定される。
リファレンスで確認すべし。
>>620 リファレンスには、こう書いてあるので、できるはずなんですが・・・
アンカータグ (<a>)
アンカー (<a>) タグは、ハイパーリンクを作成し、次の属性をサポートします。
href ブラウザにロードするページの URL を指定します。URL は、ページをロードしている SWF ファイルの場所に対して絶対的でも相対的でもかまいません。
target ページをロードする先のターゲットウィンドウの名前を指定します。
たとえば、次の HTML コードは、Adobe の Web サイトへの "Go home" というリンクを作成するものです。
<a href='
http://www.adobe.com ' target='_blank'>Go Home</a>
また、スタイルシートを使用すると、アンカータグに a:link、a:hover、および a:active の各スタイルを定義できます。
<a> タグでは、リンクテキストは青にはなりません。テキストのフォーマットを変更するには、フォーマットタグを適用する必要があります。また、スタイルシートを使用すると、アンカータグに a:link、a:hover、および a:active の各スタイルを定義できます。
622 :
Now_loading...774KB :2008/02/03(日) 19:38:26 ID:/ohg9gbp
623 :
Now_loading...774KB :2008/02/03(日) 21:05:59 ID:MtbAutbM
624 :
Now_loading...774KB :2008/02/04(月) 00:31:47 ID:hGzLtP41
>>613 一番簡単なのは、本体側にデータ取得関数を置いて
読み込んだswfからその関数を呼んで取得する。
625 :
Now_loading...774KB :2008/02/04(月) 00:51:06 ID:hGzLtP41
>>608 日本はAS3からの連中が多いからそこそこ盛り上がってるが、AS2以下は国内サイトはろくなのない。
AS2なら海外のgame関係のサイトを探すべし。gotoAndPlay.itとかは昔からある情報源。ライブラリならosflash.orgあたりで3Dライブラリでも探してみたらどう?
626 :
608 :2008/02/04(月) 02:19:32 ID:3UM2UDs8
>>625 すんません;
ご回答感謝致します。
頑張って探してみます。ありがとうございます。
627 :
Now_loading...774KB :2008/02/04(月) 22:23:53 ID:N0X6ZIMk
Ctrl + カーソルキーのショートカットの無効化は無理なんだっけ?
俺も立てようとしたんだが、ホスト規制で× 立てられる方お願いします
超基本的な質問スレはもう立ってるみたいなんで、製作初心者質問スレ 立ててきます
633 :
Now_loading...774KB :2008/02/05(火) 17:15:14 ID:WR/G7nWN
as2でCASAを使って、xml読み込み+読み込みの進行状況を表示したいです
下記のスクリプトで読み込みだけは成功したのですが(コメント/**/をしたままだと正常に動きます)
公式のページを参考に
ttp://casaframework.org/docs/org_casaframework_load_LoadGroup.html EVENT_LOAD_PERCENTを追加してみましたが
クラスまたはインターフェイス 'myXmlLoad' をロードできませんでした。
function xmlLoadPercent(sender:myXmlLoad, progress:Percent):Void {
C:\...org\casaframework\load\data\xml\XmlLoad.as: メンバーがプライベートで、アクセスできません。
super.$onData(src);
C:\...org\casaframework\load\data\xml\XmlLoad.as: メンバーがプライベートで、アクセスできません。
super.$onComplete();
というエラーが出てしまいます
公式ページのExampleと書いてあるソースをちょっと変えてやってみましたが
上記と同じエラーがでてしまいます
訂正箇所があればご指導下さい、お願いします
var myXmlLoad:XmlLoad = new XmlLoad("xml/roomData.xml");
/* function xmlLoadPercent(sender:myXmlLoad, progress:Percent):Void {
trace("My group is " + progress.getPercentage() + "% loaded.");
} */
function xmlLoadComp(sender:XmlLoad):Void {
xmlArray = XmlUtil.xmlToObject(this.myXmlLoad.getXml())["data"][0]["room"];
}
/* this.myXmlLoad.addEventObserver(this, XmlLoad.EVENT_LOAD_PERCENT, "xmlLoadPercent"); */
this.myXmlLoad.addEventObserver(this, XmlLoad.EVENT_LOAD_COMPLETE, "xmlLoadComp");
myXmlLoad.start();
ひとつ前のレスぐらい読めよ…
635 :
594 :2008/02/05(火) 18:04:18 ID:AvqemDKK
>>596 返信ありがとうございました。
ごもっともな意見だったのですが、どうしても2次元配列にはしたくなかったので無理やり処理しました。
変数 count = 4(ボタンのカウント);hanbetu = 0(このASで得られるフラグ)
配列 Array[1] = 1432;(今新たに1〜5の中から一つ選び、左の変数に被らなければ追加したい)
例)選択=1…"1"432に被るのでキャンセル、選択=5…1432に被らないので14325と追記
var kari = 0;
var works
if(count==1){
kari=Array[1];
}
else if(count>1){
for(i=count;i<1;i--){
kari = Array[1]/Math.pow(10,count-1);
if(kari == G){
Hanetu = 1;
}else{
Hanbetu =2;
}}}
と、こんな感じで判別し、別のASでフラグ別に処理しました。我ながらかっちょわるい・・・orz
それと、また新たに質問です。
環境はMXpro、携帯向けということで作っています。
コンテンツの進行状況をパスワードにして利用者が次回は途中から始められるようにしたいのです。
現在仮に作ったパスワードがa11b3c145d90・・・というものなのですが、読み込むASが作れませんでしたorz
ちなみに上のパスはコンテンツ内で取得した変数を使用しています(見たまんま)。
どなたか扱いやすいパスの作り方、あるいは上記のパスを読み込む方法がわかる方がいたら教授願います。
激しくクレクレ君風味ですが、ご容赦くださいm(__)m
>>635 split使えば
「a11-b3-c145-d90・・・」ってすれば取り出せる。
が、これ簡単に改竄できるけどいいの?
そもそもこんな簡単な質問するなら
>>632 池よ
>>634 すみません、そちらのスレな内容でしたでしょうか・・・
633の内容で自分で大きな勘違いをしていましたので、今は取り敢えずまた自力で調べなおしてやってみようと思います
スレ汚し失礼しました
638 :
635 :2008/02/05(火) 18:28:30 ID:AvqemDKK
>>636 超高速の返信ありがとうございます。
改竄されても問題ありませんので、参考にさせていただきます。
split、まったくの無知でした。今から調べてきます。
639 :
Now_loading...774KB :2008/02/05(火) 20:04:37 ID:ALXWnwVI
質問です。 ターゲットパスを変数に格納するときは普通に、 var targetMC:String="mc1.mc2.mc3"; みたいな感じで使う時は、 targetMC.ブロパティ で大丈夫ですか? いま確認出来ないのでお願いします。
> targetMC.ブロパティ ぶろぱてぃ?
>>639 var targetMC:MovieClip=mc1.mc2.mc3;
みたいな感じで使う時は、
targetMC.プロパティ
でいいんじゃないかな。文字列でなくて、直接の参照を代入すればおk。
質問です。 バカをスレから追い出すにはどうすればいいでしょうか?
豆投げりゃいいんじゃないのか
誰かが物凄い勢いで追い出すスレ 18
646 :
639 :2008/02/06(水) 00:24:39 ID:cCDM0mHB
>642 出来ました! ありがとうございました。
647 :
Now_loading...774KB :2008/02/06(水) 11:29:01 ID:qm3ZnQdS
たのむ 知ってる人いる?(AS3) Ctrl + カーソルキーのショートカット(コマ送り等)の無効化は無理なんだっけ? ゲームだと間違えてキー押された場合バグって困ってるんだ
おねがいします。 環境はFlashMX2004をMacOS10.39で使用 親MCが包括している子MC全てを指定する方法はないでしょうか? ムービーをボタンでコントロールしたいのですが 親MC内に子MCが複数存在する作りのため、 親子を同時にコントロールする必要があります。 親MCと子MCに対してそれぞれのインスタンス名を記述するのではなく 親MCのインスタンス名から、親の包括している全ての子MCを指定できないでしょうか?
>親MCと子MCに対してそれぞれのインスタンス名を記述する のがちゃんとした作り。 子MCの列挙ならfor inで出来る
651 :
649 :2008/02/06(水) 12:19:05 ID:/zfSUbQF
>650 解決しました 非常に助かりました、ありがとうございました。
>>647 できる。
プレビュー画面中に「制御」>「キーボードショートカットを無効化」
>>647 ロード用のSWFと、ゲーム用のSWFに分けて作るのが王道じゃないかな?
ロード用のSWFは1フレームしかないから[ctrl]+[→]とか関係ないし
654 :
Now_loading...774KB :2008/02/06(水) 13:13:51 ID:gxBiLEix
TextInputコンポーネントを設置した場合、外側をクリックしてもフォーカスが切れないんですけど、 外側クリックでフォーカスを切る方法はありますか?
655 :
654 :2008/02/06(水) 13:14:26 ID:gxBiLEix
環境はCS3です。
656 :
647 :2008/02/06(水) 15:00:13 ID:qm3ZnQdS
レスdでつ
>>653 あーなるほど そういう手法が! 王道ってみんなそうやってんのか!? 初めて知った
AS2でかなり作っちゃったんで変更がもう不可能に近いな…(_root参照しまくってるorz)
次から気を付けます
>>656 つMovieClip._lockroot
658 :
647 :2008/02/06(水) 16:43:34 ID:qm3ZnQdS
∩(゚∀゚)∩ うををををををできたああああああ!!!
>>657 感謝っす! てかみんな色々知ってんだなー
環境 : XP SP2, FLA8 pro, AS 2.0 質問です。 FLASH側でマウスカーソルを描写させているのですが、 コンテキスト表示時のみOS側のカーソルを表示させるにはどうすればいいのでしょうか? 自分が思いついた方法は下記のスクリプトなのですが、 これだと常時非表示になってしまい、コンテキスト表示時にOS側のカーソルが表示されないのです。 Mouse.hide(); attachMovie("Mouse_cursor","MouseCursor_mc", 1048574, {_x:0, _y:0}); MouseCursor_mc.onMouseMove = function () { this._x = _xmouse-1; this._y = _ymouse-1; Mouse.hide(); updateAfterEvent(); } // 上記のMouse.hide();ではうまくいかなかったので // onEnterFrameでもやってみたが、同じでした
661 :
660 :2008/02/07(木) 03:09:18 ID:MtMqv/s4
ごめん、自己解決したけど
力技で無理やりできた
createEmptyMovieClip("_mc", 1048575);
with (_mc) {
//Stage大の四角形を描写 (省略)
}
Mouse.hide();
attachMovie("Mouse_cursor","MouseCursor_mc", 1048574);
MouseCursor_mc.onMouseMove = function ()
{
//
>>660 と同じなので省略
}
//ContextMenuで右クリック時にカーソルを表示させ、
//_mcを押したことを確認したら非表示。
var _cm:ContextMenu = new ContextMenu(function() {
Mouse.show();
_mc.onPress = function ()
{
Mouse.hide();
delete _mc.onPress;
}
_mc.useHandCursor = false;
});
_root.menu = _cm;
662 :
Now_loading...774KB :2008/02/08(金) 12:47:07 ID:HiWO0rUw
質問です。 _visibleで非表示にしたMCでもメモリやCPUの処理を占有してるんでしょうか?
描画処理走らせるのに必要なCPU,メモリは開放されるだろうね
>>662 _visibleで操作できるっていうことは、オブジェクトが存在するだけでなくて、
表示リスト(ツリー)に登録されている状態なので、描画処理も走っている
と思われます。あと、当然MC自体の必要とするリソースはGCの対象でない
ため、確保されたままのはずです(MCへの参照が1つもなくなって、かつ
フレームが進行しないとGC対象にならない)。
665 :
Now_loading...774KB :2008/02/08(金) 17:25:17 ID:Cg17fREJ
質問です FlexでビルドしたswfはFlashCS3で配置して使うことはできないのでしょうか? mx.** のライブラリは一切使っていません。
使える
667 :
Now_loading...774KB :2008/02/08(金) 17:55:00 ID:Cg17fREJ
>>666 実験のためFlexでシンプルなMovieClipに丸を描いて、リリースビルドで作ったSWFをFlashCS3に「読み込み>ステージに読み込み」しても、何も配置された気配がありません。この方針でうまくいくものなのでしょうか?
どこかに実例紹介などあると助かります。
丸描くって、どうせ実行時に描いたんだろ?表示されなくて当然じゃね?
669 :
Now_loading...774KB :2008/02/08(金) 18:40:56 ID:G6ButrlT
stageの背景の色を動的に変えたいのですが。
670 :
Now_loading...774KB :2008/02/08(金) 18:46:02 ID:IlPNr77C
>>669 1.画面の画角の短径をspriteに描く
2.stageのサイズ変更イベントでのサイズを画角(stageWidth/stageHeight)にフィットさせる
671 :
Now_loading...774KB :2008/02/08(金) 20:25:53 ID:Cg17fREJ
>>668 すんません。。わかりません。これではダメなのですか?
どう直したらよいかぜひ教えてください。
package {
import flash.display.MovieClip;
import flash.text.TextField;
public class MovieClipExample extends MovieClip {
public function MovieClipExample() {
trace("test1") ;
this.graphics.beginFill(0xFF0000) ;
this.graphics.drawCircle(50,50,50) ;
this.graphics.endFill() ;
trace("test2") ;
}
}
}
672 :
Now_loading...774KB :2008/02/08(金) 22:14:00 ID:oG74ImKo
すいません質問です。 あるメニューフラッシュを作ったのですがフォントの埋め込みなどによってやや重く ロードに時間がかかります。 なのでそのswfファイルを別のswfから読み込み再生させたいのです。 ロード画面で完全に読み込んだらそのswfを表示させたいのですが 読み込み側のswfから先読みロード画面も兼ねた読み込みが作れるのでしょうか
673 :
Now_loading...774KB :2008/02/08(金) 22:19:19 ID:HiWO0rUw
>>663 レスありがとうございます。
そうなんです、完全に処理から解放されてるとは思ってないのですが、
描画しないだけ負担は減ってるのかが知りたかったんです。
>>664 レスありがとうございます。
上記の内容によっては完全に削除するか非表示にするか決めようと思ってました。
削除してしまうと次に表示する時に読み込みラグが少し発生するため工夫が必要だったので。
これとは別に質問です
FLVコンポーネントで複数の動画をストリーミング再生しています。
そこ際に、Aの動画が終わった後にcompleteイベントで次のBの動画を読み込むと、
AとBの切れ目に一瞬間隔が空くので見栄えが悪いのです。
別に背景のMCなどを配置してみたり、色々やってみたのですが、
回線速度によってはタイミングが合わないなど問題が出てきました。
そこで、completeイベントの部分はタイミングが合うので、
再生開始のタイミングを合わせたいのですが、
completeイベントに対しても、逆のstartイベントのようなものはないでしょうか?
>>671 それだと「ムービークリップに円を描画した」まではいいけど
そのムービークリップを「どこに描画する」という処理がないわけだ。
var _MovieClipExample:MovieClipExample = new MovieClipExample()
addChild( _MovieClipExample );
675 :
Now_loading...774KB :2008/02/08(金) 23:37:09 ID:Cg17fREJ
>>674 Flexでビルドした swf を、FlashCS3に「読み込み>ステージに読み込み」したあと、FlashCS3上のスクリプトで下のを呼べばいいのですか?
var _MovieClipExample:MovieClipExample = new MovieClipExample()
addChild( _MovieClipExample );
676 :
Now_loading...774KB :2008/02/09(土) 00:41:09 ID:q6zKo2Zb
【やりたい事】雪を降らせるASの改造 【 使用環境 】WwindowsXP / Flash8 【 質問内容 】 雪を降らせるASをコピペしてきて、下から上へ泡が浮き上がっていくflashを作っています。 ↓のASを使うと画面底辺すべてから泡が出てきます。 泡が出る位置や、範囲 (できれば1.画面中央から2.上へ広がって3.フェードアウトしていくように←3はマスクでも可能) を指定するには、どこに何の記述をすれば可能ですか? ムービーサイズの指定を変更するだけだと右と下だけに空白ができてしまい、 枠を別に作るのも考えましたが、泡が半分に切れてしまって見にくかったです。
677 :
Now_loading...774KB :2008/02/09(土) 00:42:01 ID:q6zKo2Zb
長すぎたので分けました。 MC↓ onClipEvent (load) { //specifies the size of the movie stage movieWidth = 480; movieHeight = 250; rad = 0; //variables that will modify the falling snow i = 1+Math.random()*2; k = -Math.PI+Math.random()*Math.PI; //giving each snowflake unique characteristics this._xscale = this._yscale=50+Math.random()*100; this._alpha = 75+Math.random()*100; this._x = -10+Math.random()*movieWidth; this._y = -10+Math.random()*movieHeight; } onClipEvent (enterFrame) { //putting it all together rad += (k/180)*Math.PI; this._x -= Math.cos(rad); this._y -= i; if (this._y<=0) { this._y = movieHeight+10; } if ((this._x>=movieWidth) || (this._x<=0)) { this._x = -10+Math.random()*movieWidth; this._y = movieHeight+10; } }
678 :
Now_loading...774KB :2008/02/09(土) 00:43:35 ID:q6zKo2Zb
長すぎその2 フレーム↓ for (k=0; k<30; k++) { duplicateMovieClip(_root.snow, "snow"+k, k); }
679 :
Now_loading...774KB :2008/02/09(土) 02:44:06 ID:JCp2EuIG
1. this._y = -10+Math.random()*movieHeight; を this._y = -10+Math.random()*movieHeight/2; にすればいいんじゃない? 初期位置を高さの半分(つまり真ん中)あたりに設定 2. 方向は変わってないからそのまま上に行くっしょ 3. this._y -= i; の下あたりに this._alpha -= 適当な数字・数式; かな Math.random()*5 とか 数字が大きければ早くフェードアウトする 実行して調整してみて ちなみに、_alphaが負になった時の挙動は知らない 見ただけで適当に言ってるので間違ってたらすまんこ
680 :
Now_loading...774KB :2008/02/09(土) 02:49:38 ID:JCp2EuIG
あぁ、ごめん 1.は2箇所ある this._y = movieHeight+10; を this._y = movieHeight/2; にも変更しないとだね
681 :
Now_loading...774KB :2008/02/09(土) 02:51:21 ID:JCp2EuIG
しかも、コメントが不適切だ。。。 初期位置を高さの半分(つまり真ん中)あたりに設定 ↓ 初期位置を画面全体ではなく、上半分にランダムに設定 もう寝るよ。がんばって
マウス追尾のasを拾って(freeのもの)改変しています。 flash5用のものをflash8に変換したいのですが 上手くいきません。 **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 6:')' または ',' が必要です。 _root["clip"].duplicateMovieClip("clip" add i, (i-1)); **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 7:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。 xdis = (_root.clip._x-_root._xmouse)/5; **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 8:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。 ydis = (_root.clip._y-_root._ymouse)/5; **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 9:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。 _root.clip._x = _root.clip._x - xdis; **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 10:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。 _root.clip._y = _root.clip._y - ydis; **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 11:']' が必要です。 _root["clip" add i]._x = _root["clip" add i]._x - xdis;
ソースは以下の感じなんですが どう変換すれば、flash8でも問題なくなりますか? onClipEvent (load) { _root.clip._visible = 0; i = 1; } (まだ続きます)
onClipEvent (enterFrame) { _root["clip"].duplicateMovieClip("clip" add i, (i-1)); xdis = (_root.clip._x-_root._xmouse)/5; ydis = (_root.clip._y-_root._ymouse)/5; _root.clip._x = _root.clip._x - xdis; _root.clip._y = _root.clip._y - ydis; _root["clip" add i]._x = _root["clip" add i]._x - xdis; _root["clip" add i]._y = _root["clip" add i]._y - ydis; _root["clip" add i]._xscale = xdis*5; _root["clip" add i]._yscale = ydis*5 //_root["clip" add i]._rotation = random(i*4); _root["clip" add i]._rotation = i; i = i+1; } どなたか、教えてください。よろしくお願いします。
fla5のソースなんぞ使うなよw マウス追尾なんてググればAS2でいくらでもサンプルあるだろ
>>682 **エラー** シーン = Scene 1, レイヤー = Layer 1, フレーム = 1 :行 6:')' または ',' が必要です。
_root["clip"].duplicateMovieClip("clip" add i, (i-1));
勘だけど1行目からこのエラーって事は「add」使えないんじゃない?
全部「+」にしてみれ
>>685 これ気に入ってて、使いたいんです。
アホだとは思うんですけど・・・。
>>686 全部「+」に変えたらいけました。
ありがとうございました。
688 :
Now_loading...774KB :2008/02/09(土) 14:00:25 ID:q6zKo2Zb
>>670 this._y = -10+Math.random()*movieHeight/2;
を変更することで開始位置変更ができました!
ありがとうございます!
ただ、アルファの方で
onClipEvent (enterFrame) {
//putting it all together
〜略〜
this._y -= i;
this._alpha -=Math.random()*5
と変更してみたところ、ループしていた泡が
1順して出てこなくなってしまいました。付け足す位置間違ってるのかな?
あと、こちらの説明が悪かったのですが
画面の中に水槽が置いてあってその中にだけ泡を発生させたい(回←四角の中に四角いものがある)
ので、出現位置と同じように、泡の出る横幅や、泡が消える位置も指定したいのですが
(現在は水槽以外のところにも泡がある)
よろしければ教えて下さい。
>>688 とりあえず泡が消えるのはalpha値を戻してないから透明になってる。
泡が消去位置に来たら発生位置に戻るようなロジックなのでalphaも戻さないといけない
下半分については折角
>>679 が表示位置について教えてくれてるのだから
修正したソースと前のソースの差異を見比べて根本的な仕組みを分かって欲しい所
泡を発生させる位置は(旧処理だが)
this._x = -10+Math.random()*movieWidth;
this._y = -10+Math.random()*movieHeight;
泡を消す条件は
if (this._y<=0) か
if ((this._x>=movieWidth) || (this._x<=0))
この二つを踏まえて再考してみて
690 :
Now_loading...774KB :2008/02/09(土) 16:15:32 ID:q6zKo2Zb
>>689 回答ありがとうございます。
↓のように変更したら少し近づきました!ありがとうございます。
最初の高さと幅の指定も実際より減らして調節してるのですが、
ここはいじらない方がいいのでしょうか?(実際は480*360)
あと、ループして最初に戻ったときにまとめて泡が出るようになった気がするのですが
そうでない泡もあるので気のせいなのかな・・・?
691 :
Now_loading...774KB :2008/02/09(土) 16:15:58 ID:q6zKo2Zb
onClipEvent (load) { //specifies the size of the movie stage movieWidth = 340; movieHeight = 360; rad = 0; //variables that will modify the falling snow i = 1+Math.random()*2; k = -Math.PI+Math.random()*Math.PI; //giving each snowflake unique characteristics this._xscale = this._yscale=50+Math.random()*100; this._alpha = 75+Math.random()*100; this._x = +130+Math.random()*340; this._y = -10+Math.random()*290; } onClipEvent (enterFrame) { //putting it all together rad += (k/180)*Math.PI; this._x -= Math.cos(rad); this._y -= i; if (this._y<=0) { this._y = 290; } if ((this._x>=340) || (this._x<=0)) { this._x = +130+Math.random()*340; this._y = 290; } }
なんか変なコードだな・・・ this._x = +130+Math.random()*340; だと、_xは130〜470の範囲内の値をとるわけで、 約1/3はリセット直後にも関わらず最初から表示範囲の 340超えてることになる。そもそも変だ。
>>690 最初の
this._x = +130+Math.random()*340;
this._y = -10+Math.random()*290;
この処理は初期状態から泡が全体にあるようにするための処理。
ここを
this._x = 120;
this._y = 120;
みたいにすれば初期状態はこの一点から泡が広がるようになる。
<まとめて
気のせい。最初一度に泡を作るからそう見えるだけかと
>>673 FLVコンポーネントを2つ用意して、Stage上の同じ位置に
配置しておいて、片方が_visible==trueの時にもう片方を
falseにしておいて、false側でプリロードしておけばOKだと思うよ。
695 :
Now_loading...774KB :2008/02/10(日) 00:17:16 ID:hrWdN2Q8
>>672 AS1でも2でも3でも可能
親に読み込み画面もたせるのも、子に読み込み画面もたせるのもアリ
>>692 指摘ありがとうございます。
画面サイズの数字をいじれば位置が変わるんじゃないかと思って
手当たり次第やった結果です。すみません。
>>693 回答ありがとうございます。
>>689 の答えと一緒に考えて↓のようにコードを変えて希望通りの表示位置になりました!
(画面サイズは誤魔化さずに記載)
ときどき範囲外の位置から出てくる泡があるので、おかしいところがあったら指摘して下さい。
alphaは適当にコードを突っ込んでもやっぱり一巡して消えてしまいます。
よろしければもう少し教えて下さい。
onClipEvent (load) { //ステージのサイズを指定します movieWidth = 480; movieHeight = 360; rad = 0; //降下している雪を変更する変数 i = 1+Math.random()*2; k = -Math.PI+Math.random()*Math.PI; //ユニークな特性を各雪片に与えます this._xscale = this._yscale=50+Math.random()*100; this._alpha = 75+Math.random()*100; this._x = 200+Math.random()*100; this._y = -10+Math.random()*movieHeight; } onClipEvent (enterFrame) { //一斉にそれを置きます x=幅 y=高さ rad += (k/180)*Math.PI; this._x -= Math.cos(rad); this._y -= i; if (this._y<=50) { this._y = movieHeight-70; } if ((this._x>=movieWidth-80) || (this._x<=100)) { this._x = -10+Math.random()*movieHeight; this._y = movieHeight; } }
>>697 もうこれで最後でw基礎的な部分ばかりなので次は教則本とか一通り目を通してから質問してください。
onClipEvent (enterFrame) {
//一斉にそれを置きます x=幅 y=高さ ←ここの処理は移動だよ
rad += (k/180)*Math.PI;
this._x -= Math.cos(rad);
this._y -= i;
if (this._y<=50) // 50ピクセルより上に来た泡を下から再度移動させるよ
{
this._y = movieHeight-70;
this._alpha = 75+Math.random()*100; //透明度を初期状態にする
}
// _x:100〜400より外側に出た泡を下から再度移動させるよ
if ((this._x>=movieWidth-80) || (this._x<=100)) {
this._x = -10+Math.random()*movieHeight;
this._y = movieHeight;
this._alpha = 75+Math.random()*100;//透明度を初期状態にする
}
}
AS3、どうでもいい疑問というか疑問です。 trace( StageQuality.HIGH ); //結果:high stage.quality = StageQuality.HIGH; trace( stage.quality ); //結果:HIGH(なぜか大文字になる) なんでこんな実装になってるんでしょうか? stage.quality == StageQuality.HIGH がfalseになるのが どうも納得いかないw
read-only
>>699 本当だw Stage.qualityのgetterでポカやらかしてんじゃねw
702 :
Now_loading...774KB :2008/02/10(日) 19:22:28 ID:1VjiimLA
>>698 色々すみません。ありがとうございました。
出てくるときに元に戻すんですね。
申し訳ありませんが、どなたかご教授願います。。 var a1:Array = new Array("a","b","c"); var a2:Array = new Array("d","e","f"); for (var i:Number = 1; i<=2; i++) { for (var j:Number = 0; j<3; j++) { trace(this["a"+i](j)); } 上記のように複数の配列の複数の値を連続的に取得したい場合、 【this["a"+i](j)】だと【undefined】となってしまうのですが、 【a,b,c,d,e,f】とトレースしてほしい場合、 【this["a"+i](j)】部分をどう変更すればよいのでしょうか。
勉強の為にもタイムラインに書かずクラスで処理を、を心がけてやっていたら アルファを変えるだけクラスとか、ボタン押した時のトゥイーンのクラスとか 完成途中の現時点で、細々としたクラスをタイムライン1フレーム目でnewで十数個呼び出している始末です こういった処理をよりスマートにする考え方をオブジェクト指向というのでしょうか? クラス上での上手なスクリプト構築がどうも掴めません・・・ 実際仕事でフラッシュサイト作られたりする玄人の人等は、一つのページをどれくらいのasファイルで済ませているものでしょうか
>>704 (j) → [j]にして配列にアクセス
trace(this["a"+i][j]);
>>706 ! 初心者ミスですね・・・orz
ありがとうございます。
>>705 仕様によっては、コマンドパターンとかでアルファのフェードだけ処理するクラス作った
方がスマートな場合もあるからクラスの数とか関係ないと思うが。
拡張性のためには数増えても空のインターフェースやsuperしかないクラス
用意しといた方が便利だし。
AS3,FlashCS3テキストフィールドについて質問です。 テキストツールで画面にテキストフィールドを作り、outというインスタンス名を 付けました。プロパティで複数行をチェックして以下のスクリプトを書きました。 out.text = "HR002:標準的な色形をもつもの:defo:midiam:straight:normal:black:hr002.png"; 表示はするのですが、フィールドの横幅がまだあるのに、改行位置が「...もつも」 で改行されてしまいます。フィールド幅で改行するにはどうすればいいでしょうか?
710 :
Now_loading...774KB :2008/02/11(月) 13:43:20 ID:upnIimEz
FullScreenDisable=1という行をmms.cfgファイルに追加すると、 フルスクリーンモードを無効に出来るようですが、 ASからこの値を取得する方法は無いでしょうか?
711 :
Now_loading...774KB :2008/02/11(月) 15:06:14 ID:FjGP5eTo
AS3のMCの挙動っておかしくね? 毎フレームplay(); させたら中の再生ヘッドが止まる! 他にもフレーム移動しただけで 移動先の子MCの中のアニメが動かない! this.stop();書いてないのに動かない play();させても動かない おかしいだろこれえええええ!?
712 :
Now_loading...774KB :2008/02/11(月) 17:58:10 ID:DOhKgVVB
質問はここでいいのでしょうか・・・ アンケートのような入力フォームを作りたいのですが どういう開発環境を使えばいいでしょうか? FlashDevelop+Flex2SDKを入れてみたのですが フォーム画面のIDEみたいな機能はないみたいで・・・ ※仕事とかではないです、趣味でやろうとしてます
713 :
Now_loading...774KB :2008/02/11(月) 21:55:53 ID:YZvPfUOu
>>712 紙と鉛筆とflex2
脳内でUIのレイアウトできるならflexだけで十分
>>705 ものによるけど80〜200ファイルくらい
クラスの数が多くても別に偉くないし、少なすぎてもよくないとされているよ
715 :
Now_loading...774KB :2008/02/12(火) 02:50:37 ID:vqAE/sxL
>>713 だめだmxmlを直書きなんてやってらんね
やっぱりFlexBuilderをワレズるしかなさそうだ
AS3の質問です。 以下のようにクラスAを定義しました。 public class A extends Sprite { ... public override function set width (v:Number):void { ... } } そしてAを継承したBと、さらにBを継承したCというクラスを定義したのですが BのwidthはAでオーバライドしたものが使われるものの、 CのwidthはDisplayObject標準のもの(scaleXが変わるだけ)になってしまいました。 B,Cどちらともwidth関連の定義はしていません。 そこで、CにおいてもAでオーバーライドしたwidthの挙動を使う方法と、 できればですがどうしてこのような挙動になるのかをどうぞご教授ください…
718 :
717 :2008/02/12(火) 20:15:30 ID:0N4LBMWX
うわーっ! すいません、私の勘違いでした…。 ちゃんとAで定義した動作をしていたけど、 間違えてCのインスタンスの親のwidthを変更していたために変な動作になってるように見えているだけでした。 なんてバカなんだ俺・・・気づけよ…orz
719 :
Now_loading...774KB :2008/02/12(火) 20:45:15 ID:2IqvmRLB
iroiro使ってると、画面上部のbillboard.swfが 動画:× 再生:× みたいになりませんか?
誤爆しました
721 :
Now_loading...774KB :2008/02/13(水) 07:55:01 ID:9X0inCA/
>665 の自己レスです。どうも質問の仕方が悪かったようで申し訳ありません。 「Flexで作ったプログラムを、FlashCS3上に(普通の画像のように)配置して ActionScriptをできるだけ使わずに一般のクリエータさんが 気軽に編集できるようにする方法」 が知りたかったのですが、 コンポーネント化によって無事実現できました。 半端な質問でご迷惑をおかけしました。
722 :
Now_loading...774KB :2008/02/13(水) 18:50:26 ID:9X0inCA/
質問です ActionScript3のオブファスケータ(難読化ツール)をご存じないですか?
724 :
Now_loading...774KB :2008/02/13(水) 22:39:30 ID:TpTcA76/
以下のxmlファイルをHTTPServiceを使って読み込みます。DataGridにはうまく表示されるのですが、
myXMLの中を参照しようと思うと何も表示されません。なにが原因か教えてください。
<GGG1><MMM1>
<item id="1">
<bCode>0100</bCode>
<bName>Tarou</bName>
</item>
<item id="2">
<bCode>0200</bCode>
<bName>Jirou</bName>
</item>
</GGG1></MMM1>
----------------
<mx:Script><![CDATA[
public var myXML:XML=null;
public function goMenu2():void { httpService3.send();}
public function doSelect3(event:ResultEvent):void {
myXML = httpService3.lastResult.GGG1;
}
//ここでなにも表示されない
public function xmlcnt():void {
Alert.show(myXML.item[0]);
}
]]></mx:Script>
<mx:HTTPService id="httpService3" url="
http://localhost/mm.xml " useProxy="false" result="doSelect3(event)"/>
<mx:DataGrid dataProvider="{httpService3.lastResult.GGG1.MMM1.item}">
<mx:DataGridColumn headerText="CODE" dataField="bCode"/>
<mx:DataGridColumn headerText="名" dataField="bName"/>
</mx:DataGrid></mx:Application>
GGGとMMMとやらがあべこべ アクセスするならmyXML.MMM1.itemかmyXML...item
AS質問とは少し違うのですがCS3でクラスを色々作ってると 上のタブではファイルの管理が手狭になってきました。 VISUAL STUDIOみたいに左側でファイルエクスプローラーを表示しつつ 作業できたら、と思うのですがやはりその場合はeclipseのような別ソフトで エディタとして使ったりしてるのでしょうか? 「こうするとやりやすいよ」なんて方法があると是非教えて頂きたいです
いちおう「プロジェクト」機能ってのがあるにはあるよ。 ただ合うかどうかは使ってみてもらって試すしかわからん。
>>727 おお、ありがとうございます。
逐一開いたり閉じたりするためのフォルダ移動が無くて済むのでとても良いです。
ってこれ新規作成で普通にありますねorz気づかなかった・・・
機能に気づいてないだけな気がしてきたので
AS関連だけじゃくCS3のヘルプを一読しようと思います。ありがとうございました。
729 :
Now_loading...774KB :2008/02/15(金) 01:02:47 ID:Ov9rdt9U
>>726 昔からあるやつだが、これもそこそこ
www.gskinner.com/products/gProject/about.php
730 :
Now_loading...774KB :2008/02/15(金) 11:41:06 ID:Jv+unhwi
質問させてください。 xPathでXMLを読み込み、ダイナミックテキストに表示します。 import com.xfactorstudio.xml.xpath.*; var _xml:XML = new XML(); _xml.onLoad = function(success) { if (success) { var _arr:Array = XPath.selectNodesAsString(this, "xml/list/@a"); _txt.text = _arr.toString(); } }; _xml.load("test.xml"); //読み込む"test.xml"の内容はこのとおりです。 <xml> <list a="hogehoge"/> <list a="<br>"/> <list a="ahahaha"/> </xml> //結果は、hogehogeしか表示されません。 //XMLの中に"<br>"と書かれてもそのまま表示できるようにするにはどうしたらよいでしょうか?
xPath使ってないからわからんけど <br>効かせたいんならhtmlとしてレンタリングしないとダメなんじゃね?
732 :
Now_loading...774KB :2008/02/15(金) 12:03:25 ID:Jv+unhwi
わかりにくくてすみません。 <br>タグを効かせたいのではなく、 <br>という文字列としてそのまま表示させたいのです。 ちなみに、xPathをつかわずにfirstChild.childNodesでやってもだめでした。
ああ、スマン。勘違いした。 だったら逆でレンタリングしなければいいんじゃね? まずそのダイナミックテキストのテキストフォーマットを見直すのをオススメする
735 :
Now_loading...774KB :2008/02/15(金) 12:51:01 ID:Jv+unhwi
たびたびわかりにくくてすみません。XMLの属性内に、"<>"などどんな文字列を使われていてもそのまま表示できるようにしたいのです。
736 :
Now_loading...774KB :2008/02/15(金) 13:20:12 ID:TphLWMDm
無理じゃない?よくわからんけど --BR--のようにハイフン2連続で変換 とかすれば出来ると思うけど。
attributeでCDATAが使えないのはXMLの仕様だったと思う。 XpathとかASとかは関係ないよ。
属性にタグって、どんだけ糞設計なんだよ
>>730 実体参照しないのなら、テキストで読み込んで、
正規表現でも使って置換してから、文字列としてXMLロードすればいい。
でも>738の言ってるように本当にクソな設計だから実体参照使った方がいい。
740 :
Now_loading...774KB :2008/02/15(金) 19:45:56 ID:Jv+unhwi
すみません。ユーザーから入力された値を元に、動的に出力したXMLを読み込んで表示するのですが、 どんな文字列を打たれても表示できるようにしたかったのです。 でも無理ですよね。レスを下さった皆さん、ありがとうございます。
742 :
Now_loading...774KB :2008/02/15(金) 22:22:53 ID:d/+50RAG
FLASH8でスクリプットを記述していくと 文字が小さすぎて : ; の見分けがつかず タイプミスをします。 表示を拡大できないでしょうか。
環境設定 > フォントサイズ
747 :
Now_loading...774KB :2008/02/16(土) 13:07:58 ID:64feqenG
使えるか試そうとすれば分かるのに なんでそれすらしないのか。 import mx.xpath.XPathAPI ~~~
>>738 属性使いまくりのMXMLは糞仕様ってことかw
>>750 「属性にタグ」が糞仕様なんだ。よく嫁。
MXMLタグの属性が独立ノードになってどうすんだよ。
AS界隈は、属性に全部入れたがる奴が多いんだよ。 なんでかっていうと、xpathとか標準で使う文化が無くて、子ノードを辿っていくのが煩雑だったのに対して、 XML.attributes.属性名でアクセスできる環境が提供されてたから、XMLの構造とかに興味無いけど XML使うのがオシャレと思ってる連中が飛びついたんだよ。 AS用にしか使えない、意味のわからんXMLが氾濫してるのはそいつらのせい。マジで勘弁してもらいたい。
>>751 htmlTextの指定も属性だろ。バインディング使うとは限らん場合もある。
構造を意識しないでXML作る奴はたいてい糞。 だから糞かどうかの判断すら付かねえで見当違いの事言いだす。
>>755 ほんとだ。htmlTextタグ使えってちゃんと書いてあったゴメン
750-757>> そういえば、俺が会社で「なんでこんな属性ばっかのXMlになんだよ」って怒ったら、 営業企画とFLA屋が「属性の方が楽なんだからどうでもいいじゃん」っていう 不毛な会話になったことあるなぁ。 普通にchildNodes.nodeValueとかでガンガン回せばいいだけなのになぁ。 そのプロジェクト、回収がかかったときに属性じゃ回収しきれなくて XMLの構造からスクラッチになったというオチ付き。
759 :
Now_loading...774KB :2008/02/17(日) 00:16:01 ID:II4I+9Qc
>749 試したけど動かなかったのよ でもどこか間違ってたのかもだしそれすらもよく分からないので聞いてみた 使えるかどうかいまだわかんねーw 750とかからの流れ読むとas2.0にはやっぱXPath無理なのかな? おいらのは英語版でHelpも大変、、w>747
760 :
Now_loading...774KB :2008/02/17(日) 00:43:24 ID:t8LcMo4U
Flashは、Ver.4のときに少し使って、今また必要にせまられ MX2004を使おうとしています。 私の場合、Web用ではなく*.exe ファイルを作成することが 多いのですが、MX2004では fscommand が上手くいかなくて 困っています。 具体的には、Flashの画面から他のソフトを呼び出したいのです。 これは、Ver.4の時は全く問題なく出来ていました。 MX2004で同じ設定をしても、他のソフトが呼び出せません。 Ver.4のときに作ったファイル(*.fla)を2004に読み込んでも、 動きません。(ちなみに、Ver.4では、今でも正常に動きます) 記述ですが、ヘルプに書いてあるとおり、下記のように指定しています。 なぜダメなんでしょう。(もしかして、Pro.版でないとダメでしょうか?) on (release) { fscommand("exec", "*.exe"); } どなたか、お教えください。
761 :
Now_loading...774KB :2008/02/17(日) 01:20:31 ID:t8LcMo4U
760です。 自己解決しました。 MX2004からは、セキュリティ強化の関係とかで、 必ずfscommandというフォルダを作成しないと 呼び出せないそうです。 昨日から丸一日悩んでいて、ここに書き込んでから もう一度調べたら分かりました。
762 :
747 :2008/02/17(日) 02:20:29 ID:II4I+9Qc
>>759 FLA屋には、動けばソースは何でもいいという発想の奴が多い
機能さえそろっていれば UIやデザインはどうでもいい。っていう奴も多い
766 :
Now_loading...774KB :2008/02/17(日) 15:37:25 ID:oeqqiKyd
AS2で変数から変数名を調べることってできないですか? hensu="hoge"; name=getHensuName(hensu); trace(name+"の中身は"+hensu); これで「hensuのなかみはhoge」って出力したいんです。
AS2.0で、ムービークリップが、左右ボタンを押せば加算移動をし 目標ボタンを押せば目標の座標へ減速移動する、というものを作ろうと思いました。 けど、目標の座標へ減速移動したあとに、左右ボタンを押して加算移動しようとするとうまくいきません。 どうすればいいでしょうか? onClipEvent (load) { xmax = -400; xmin = 0; this._x = 0; } onClipEvent (enterFrame) { idou = _root.mokuhyou; this._x += Math.floor(idou-this._x)/4; if (_root.hidari) { if (this._x<xmin) { this._x += 10; } } if (_root.migi) { if (this._x>xmax) { this._x += -10; } } } 宜しくお願いします。
768 :
Now_loading...774KB :2008/02/17(日) 15:55:09 ID:C95z5+0o
>>766 a="HOGE";
for(var i in this){
trace(i+"は"+this[i]);
}
//aはHOGE
769 :
Now_loading...774KB :2008/02/17(日) 16:15:58 ID:C95z5+0o
>>767 function onEnterFrame(){
swtich(mode){
case "目標モード":
//目標へ移動するコード
break;
case "キー入力モード":
//キー移動のコード
break;
}
}
左右キー押したら、modeをキー入力モード
目標ボタン押したら、modeを目標モード
770 :
Now_loading...774KB :2008/02/17(日) 18:59:10 ID:S2t3TAF1
ノートンの広告ブロックをONにしていると、 flashに外部jpg画像が読み込まれません。 この現象を回避する方法はありますでしょうか? 画像名は外部XMLから取得しています。
1.ノートンをアンインストール 2.パッケージにしまう 3.燃やす 4.外部jpg画像が読み込まれる ●ノ□ ● ∬ \●/ ノ■ヘ → ●■ → <■> ▼ → ■ / □ノノZ乙 つつ ▲ / \ ていうかノートンみたいなウンコソフト昔捨てたからよく知らんが Flash関係なくノートンの設定次第だろ? 許可サイトやら不許可サイトの設定はあるはずだし、 ブロックされるんなら実行ドメインとは別ドメインの画像を読み込もうと してるんじゃないのか? 違うなら、もう1〜4を実行してくれ。
772 :
Now_loading...774KB :2008/02/17(日) 20:44:57 ID:C95z5+0o
>>770 ノートン先生w
常駐系はウザイ
ブラウザの挙動を変えるようなものは制作環境としては問題
771に同意
スレ違いです。
>>769 どうにか参考にして、自分のやりたい動きにすることができました。
ありがとうございました。
>>771 770です。わざわざAAまでどうも。
画像はswfと同一の場所から読み込んでいます。
自分ひとりなら広告ブロックOFFなりアンインストールなりで対処できますが、
見る人全てにそれを要求することはできません。
Flashの作り方で問題を回避できるとしたら、
方法をご存知の方はいないかなと思いまして、お尋ねした次第です。
swfからウィルス対策ソフトいじれたら、それこそウィルスじゃんw無茶言うなよw
>>775 ファイル名ディレクトリ名にbannerが入ってるとブロックするよ。
bnrでもブロックしたかな?他にもファイル名でなんかあったはず。
他の原因でも、ノートン先生の仕様を調べていけば対処できるのだろーけど
設定次第でどーしようもないし、ノートン先生のせいです知りません。
で押し通せるならそっちの方がw
他はともかくノートンに限っては「アンインストールしろ」が許される
電卓をAS2.0で作って何度も計算するとします。 今まで計算された内容を保存し、ボタンをクリックすると計算された式が表示されるようにってできますか?
できます
>>779 みたいに抽象的なこと聞くひとって
自分でつくるプログラムの構造について
図書いたり箇条書きしたりとかしないのかなあ
別に中上級者向けだけのスレじゃないし
中上級者なら小さいプログラムは全部頭の中で組めるだろうけど 初心者なら手抜きしないで図や文にまず書いた方が後々楽だし 自分の進歩のためにもやるべきだと思うけどね
>>777 770です。貴重な情報をありがとうございます!
785 :
Now_loading...774KB :2008/02/19(火) 10:34:35 ID:Wv3BpyDl
質問させてください。 メインタイムラインの停止を取得するようなscriptってないですか? 「メインのタイムラインが停止したら、○○をする」って内容を記述したいんですが。
786 :
Now_loading...774KB :2008/02/19(火) 10:44:50 ID:WoiG2FFT
>>785 停止するということは、停止させる処理があるんでしょ?
そこに書けばいいじゃない。
787 :
Now_loading...774KB :2008/02/19(火) 11:23:15 ID:nDK0QbwV
ヒント(笑)
790 :
Now_loading...774KB :2008/02/19(火) 15:15:41 ID:t0iWY2hI
質問なんですが 外部のfunctionをグローバル変数として どこからでもそのfunctionを読み込むことはできますか?? ごめんなさい。よろしくお願いします。
>>790 どのバージョンの話なのか分からないけど
クラスファイル作ってその中にfunction書いてそれをimportじゃだめなのか
792 :
Now_loading...774KB :2008/02/19(火) 15:26:41 ID:0JGcjKfh
Flash CS3 新米ですみません。 ドキュメントクラスのメンバがコンフリクトしているという警告が出て困っています。 ステージに、a_txt という名前のテキストフィールドを配置しました。 そして、ドキュメントクラスを以下のように作りました。 {{{ package { import flash.display.MovieClip; import flash.text.TextField; public class DocTest extends MovieClip { public var a_txt:TextField; } } }}} Flash8の時は、これで普通にコンパイルできたのですが、CS3では、以下のようなエラーがでます。 1151: 定義 a_txt (名前空間 internal) にコンフリクトが存在します。 どうしたら解決できるでしょうか。
793 :
512 :2008/02/19(火) 16:28:59 ID:m3h6cu6K
>>792 「public var a_txt:TextField;」消すと良いはず
flash側で作ったインスタンスはクラス定義内で宣言しなくても使えるよ。
というか変数宣言しちゃダメ
>>793 名前に変なのが入ってたorz
512とは一切関係ありません
795 :
Now_loading...774KB :2008/02/19(火) 17:02:28 ID:0JGcjKfh
>>793 コメントありがとうございます。
でも、宣言しないと、FlashDevelopとかで
コード補完とかできないじゃなですか!何か解決策ありますか?
796 :
Now_loading...774KB :2008/02/19(火) 17:12:49 ID:nDK0QbwV
>>795 記憶ちがいだったらすまん
classをdynamic宣言しておけばエラーはでなかったかも
>>795 それパブリッシュの設定のAS3.0の設定で、「ステージのインスタンスを自動宣言」外せばコンパイル通るよ。
ここチェックしてあると、内部的に、自動的にインスタンス名と同じ変数の宣言と、インスタンスへの参照が補完されるから、コンフリクト起こすらしい。
798 :
793 :2008/02/19(火) 17:23:46 ID:m3h6cu6K
>>797 おおそんなオプションがあったとは・・・
確認してませんが,情報サンクスです
799 :
Now_loading...774KB :2008/02/19(火) 17:36:50 ID:0JGcjKfh
>>797 なるほど。そんなオプションがあったとは!ありがとうございました。
質問です。 あるMCに、loadClipで外部からswfファイルを呼び出して表示させているんですけれども、時間が経つと勝手に表示が消えてしまします。 呼び出している側のswfには表示を消すような記述はしてありません。呼び出される側のswfも同様です。 消えるタイミングもバラバラでまれに再現しないときもあります。 また、これはブラウザでもFlash内のプレーヤーでも発生するのです。 原因や対策を知っている方がおりましたら、アドバイスお願いします。 Flash 8 / AS2.0
>>800 勘だけど同一深度にMC作ったりしてない?
AS2.0で勝手に消えるとかは大体深度の問題な気がする
>>800 ありがとうございます!
ちょっと、しらべてみます。
803 :
Now_loading...774KB :2008/02/19(火) 22:50:52 ID:a66Au5SN
MCを左右反転させる場合はどう書くの?(AS3)
自己解決すまんw MC.scaleX = -1;
AS2.0です。 1.子のムービークリップで作った変数や関数には、 親ムービークリップから参照は可能でしょうか? 2.グローバル変数はどの階層からでも(どのムービークリップからでも) 参照は可能ですか?
>>805 1.参照可能
2.参照可能
変数や関数を書いたMCが参照したい時にフレーム上にあればどこからでも参照できる。
_rootに書いとけば_root.hoge()みたいにどこからでも呼べる
こんばんわ。 FLASHでページを開いたときにランダムに画像を表示させたいのですが、 どのようなアクションを組めばよろしいのでしょうか? よろしくお願いします。 環境 winXP FlashMX2004
>>807 僕がよくやるのは乱数を使う方法。
var imgs:Array = [img1,img2,...];
var currImg:Object;
var randomNumber:Number = Math.ceil(Math.random()*imgs.length)-1;
currImg = imgs[randomNumber];
ただし、乱数のシードが起動からMath.random()呼び出しまでのミリ秒なので、
偏りは出るかもしれない。
ちょっと別の方法だと、
var imgs:Array = [img1,img2...];
var seed:Number = new Date().getTime();
var currImg:Object;//表示させる画像オブジェクト
currImg = imgs[seed%(imgs.length)];
のようにして、配列の長さで剰余を作り、配列からデータを引っ張るのも
よく使われると思います。
810 :
Now_loading...774KB :2008/02/20(水) 10:47:21 ID:EoIeqlF0
AS2です クラスAの中からクラスBを呼び(クラスAの処理は一時停止)クラスBでenterFrameを使ったトゥイーン処理が終わったら クラスAの別の関数処理をスタートさせたい場合、クラスBの処理終了が終わった旨をクラスA側に知らせるにはどうすればいいのでしょうか? クラスB処理終わりにreturnを使ってみたりしましたが動作してはくれませんでした
クラスBを呼ぶときにクラスAのインスタンスをBに渡してあげて、Bの処理終了で Aの順序処理メソッドみたいなのを呼ぶとか。
>>811 タイムライン上で
var 変数a:クラスA名 = new クラスA名(処理する大元mc)
クラスAの途中で
var 変数b:クラスB名 = new クラスB名(トゥイーンするmc)
クラスB処理が終わったら、クラスBの最後で
変数a.クラスAの関数();
といった事なのでしょうか?>順序処理メゾットを呼ぶ
ただタイムライン上にある変数aをどうクラスBへ渡せばいいのかがわかりません…
AからBをnewするときにnew B(this); thisはAの参照 class B { function B(par:A) { trace(par.Aの変数); } } とかかな
814 :
Now_loading...774KB :2008/02/20(水) 13:26:24 ID:wqkPu2/n
>>810 メソッド呼び出しでやるならこれでどう?
//A
class A{
function start(){
b=new B(this);//BにA(自分)の参照を渡す
b.play();
}
function next(){
trace("next");
}
}
//B
class B extends MovieClip{
var _a;
function B(a){
_a=a;//A参照を保持
}
function onEnterFrame(){
if(_currentframe==_totalframes){
_a.next();//Aに対してメソッド呼び出し
}
}
}
//main
var a=new A();
a.start();
>>813-814 811のクラスAの途中の処理を
var 変数b:クラスB名 = new クラスB名(トゥイーンするmc, this)
クラスBの処理の最後で
thisを入れた変数.クラスAの関数();
の形で動きました!ありがとうございます!
>>810 つAsBroadcasterクラス
>>811-814 参照カウントが上がりっぱなしになって、クラスAのインスタンスが
いつまでたってもガベージコレクション対象にならない、とか
リソースリークしまくる、とかそういうトラブルの元にならなければいいけど。
AS3ならDispatcher使えというところだがAS2のDispatcherは何気にトラブル 起こすんだよな。自作するか自分のリスクでご利用くださいって感じかなあ。
mxパッケージの事? トラブルってどんなんだよ
>>818 リスナーいくつか登録すると最後に登録したリスナー宛てにしかディスパッチ
されなくなるって現象が起きてメンドイから自作のに変えたら直った。
820 :
Now_loading...774KB :2008/02/21(木) 11:28:44 ID:g4yHtz7F
>>819 リスナーいくつか登録すると最後に登録したリスナー宛てにしかディスパッチ
されなく...
ってリスナーの意味無いじゃん
ディスパッチの仕方に問題があるのでは?
>>821 ディスパッチの仕方じゃなくてディスパッチ後の関数の処理によって
for inループでこけてた。再検証してみたら関数の処理代えるか
overrideでforループに書き換えれば普通に動くみたい。
as2.0で質問です サイトを開いた時に出てくるローディングバーの伸びる動きが、イージングしている様な滑らかな動きをしているのを 時々見掛けますが、あれはどうやって作られているのでしょうか? 現在のonLoadProgressの読み込み算出式は loadper = Math.floor(nLoadedBytes/nTotalBytes*100); loadingbar_mc._width = loadper; これだと、読み込んだ分だけズッズッと増えカクカクした動きです アドバイスお願いします
>>823 実際見ないとわからないけど、
10%単位や20%単位で動かしてるんじゃない?
指定単位ごとにしか動作しないように。
違うかもしれない。
825 :
Now_loading...774KB :2008/02/21(木) 18:30:22 ID:g4yHtz7F
>>823 位置に直接percent値をあたえたらあにめしないよ
・バーのwidthにはtweenするように計算結果を与える
わかりやすく100%が100pxとして
簡単にやるなら
function onEnterFrame(){
var storedPercent=(loaded/total)*100;
_width+=(storedPercent-_width)/10;
}
>>824-825 アドバイス有難うございました、バーの長さを調整するのは目から鱗でした
まだ実際に試せていませんが参考にさせて頂きます!
trace(1 / 1000000000 > 0); //trueになってしまう。 すいません。浮動小数点を0以下かどうか判定する方法はないですか?
>>827 すまんが、言ってることがよくわからん
まあ、Math.floorするとかかな
>>827 それFlash8でやってみたら1e-9で0じゃなかったけど
すいません。俺がボケてました。 逝ってきます。
>>827 それはそうなんじゃない?
それともこういうことを言いたかっただけのか?
num = 0.09+0.01;
trace(num);
trace(num == 0.1);
AS3にて、 ドラッグ中にマウスが画面の外に出た後も、 マウスアップやマウスムーブを検出する方法はないですか?
833 :
Now_loading...774KB :2008/02/22(金) 17:35:54 ID:b/9Q5D+6
835 :
Now_loading...774KB :2008/02/22(金) 21:39:25 ID:ryxMtqJL
AS2で開発してます。 生成したインスタンスに関する情報を実行時に取得する方法はありますか? AS3だとReflectっぽいクラスがあるようですが、AS2なので途方にくれてます。 例えば完全修飾名を取得するとして、 以下のようなクラスがあった時に net.2ch.pc11.hoge という文字列を実行時に取得したいということです。 class net.2ch.pc11.hoge { function hoge() { } }
CS3で作ったFLASHの処理落ち検証で 主処理である関数の最初にgetTimer() ⇒ Time1 関数の終わりにgetTimer() ⇒ Time2 FPS30の場合、Time2 - Time1 > 33 の時「処理落ちしている」と判定したんだが 上の人間に「そんな中途半端な測定するんじゃない」と言われてしまった。 他に動作しているイベントや画面内のオブジェクトもないし 処理落ちしない時は33ミリ秒以内の値が出てるし何がいけないのか分からない・・・ 若干誤差はあれどTime2-Time1>33の考え方って間違ってるのかな?
上司に聞け
AS2.0 flash8です 自作クラスをフォルダに纏めて置きたいと思って、ネット配布されているライブラリ追加のクラスパス設定を真似してみたのですが、 エラーが出てしまいます。訂正すべき箇所があれば教えて下さい。お願いします。 // C:\(略)\as\org\myClass\PathTest.asのクラスファイル class PathTest { var su:Number; function PathTest() { su = 69; } function suTest() { trace(su); } } // fla側 import org.myClass.PathTest; var pat:PathTest = new PathTest(); pat.suTest(); // flash8のクラスパス設定 C:\(略)\as // エラー出力の内容 C:\(略)\as\org\myClass\PathTest.as: 行 1:コンパイルされたクラス 'PathTest' が読み込まれたクラス 'org.myClass.PathTest' に一致しません。 class PathTest {
839 :
Now_loading...774KB :2008/02/23(土) 00:11:48 ID:oYvcbNEk
>>838 クラスの宣言も完全修飾名が要るよ。
class org.myClass.PathTest {
とする。
>>839 ご指示の通りにクラスの表記を変えたらすんなり動きました!ありがとうございます!
841 :
Now_loading...774KB :2008/02/25(月) 14:10:11 ID:crS8tOdm
質問させてください。 wmode = tranparent で テキスト日本語入力を受け付けるようにする方法はありますでしょうか? cs3 as3.0です。
とりあえずIMEとかfocusとか調べてね
FlashCS3 AS3です。 CD-ROM内をナビゲートするメニューを作りたいのですが、CD内の特定のファイル をCD内の指定したアプリで開くというメソッドってありますでしょうか? CD-ROMのルートにパブリッシュしたのexeファイルをおいて、AutoRunで起動。 そのメニューから CD-ROM内のmovie.aviというファイルをCD-ROM内にある動画再生ソフトを使って 再生するという事がしたいのです。 navigateToURL()じゃないっぽいですし、ご存じでしたら教えてください。
間にCとかVBかませないと出来ないと思うけど。 あーでもブラザーのControlCenter?っていうプリンタ用アプリは、 Flashのexeでファイル処理とか色々やってたな。透明化も出来てたし。詳しくは知らんけど
>>844 そうなんですよ。いろんなところで、flashのexeを使って、やりたい事を
やってるCD-ROMを見かけるのですが、どうやってんのかなー。と思いまして…。
Cとかかませないと駄目ですかぁ…。
>>846 ありがとうございますっ!さっそく熟読してきますっ!
>>848 そだよ。バイト配列は書いたり読んだりすると、ポインタの位置と言うか、カーソルの位置と言うか、
positionが更新されるよ。
import flash.utils.ByteArray;
var buf:ByteArray = new ByteArray();
buf.writeFloat(10);
trace("ポインタの位置は、" + buf.position);
buf.writeFloat(15);
trace("ポインタの位置は、" + buf.position);
buf.position=0;
trace("ポインタの位置0からreadFloatした値は、" + buf.readFloat());
trace("ポインタの位置は、" + buf.position);
>>848 斜め読みしただけなのでてきとうですけど
>URLStream および Socket クラスと同じメソッドを使用すると、
>メモリ内ファイルとして読み取りおよび書き取りをすることができます。
つまりファイルからデータを読むとファイルポインタが次のデータに移動するのと
同じような感覚で動作するのでは>bytes.readFloat()
851 :
848 :2008/02/26(火) 23:54:57 ID:CHqEpyvx
>>849 ,850
なるほど二人ともサンクス。説明わかりやすいです!
AS3を勉強していますが構造体ではまっています。 class Hoge { int a; int b; } Hoge[] hg = new Hoge[3]; hg[0].a = 1; という様にJavaでは構造体での配列が使えましたが AS3では出来るのでしょうか? どなたかご教授よろしくお願いいたします。
普通に配列にすればいんでね var hg:Array = new Array(); hg[0] = new Hoge(); hg[0].a = 1;
854 :
852 :2008/02/28(木) 11:57:12 ID:M68Cp0HX
>>853 ありがとうございます、
class Hoge{
public var a:int;
public var b:int;
}
何とか出来ました。
ただclass内の変数はpublic varにする必要があるみたいです。
(感覚的にまだ慣れません・・・)
あとクラスではなくpublic functionで同じ事は可能でしょうか?
>>854 可能。
あと、privateしたクラスフィールドもgetter/setter作ってアクセスできるようになる。
856 :
852 :2008/02/28(木) 12:49:20 ID:M68Cp0HX
>>855 、
>>853 ご教授どうもありがとうございました。
javaからの移行で詰まっていましたので助かりました。
(ASなどFlex関係も情報が少なくて・・)
857 :
Now_loading...774KB :2008/02/28(木) 13:04:25 ID:+zjjnmQD
あるボタンを押したら、最上段レイヤーにある黒いムービークリップのアルファを調節して画面がブラックアウトし、 もう一度そのボタンを押したら黒いムービークリップのアルファを0にする、という効果をつけたのですが、 黒いムービークリップの下にあるメインのムービークリップに配置されている、ボタンやムービークリップのenabledが利いたままの状態なので これをブラックアウトの時はfalse;にしたいのですが、対象が結構な数があり大変です。 これはやっぱりボタンを押した時に一つ一つにfalseを指定していくしか方法は無いですか? ASは2.0です。
止めたいボタンの上に透明ボタンをラップみたいに重ねてonClickイベントぶんどるとか ボタンをMCにまとめてfor inでenabled = falseにするとか
AS3で質問です。 htmlTextに(>_<) って顔文字が入ると<以降が表示されなくなってしまいます。 replace(/</g, "<"); で上手く置換できないようなので教えてください。
うわ。””内は&lt;です。
>>858 for inを調べてみたら自分のでも扱えそうでした、透明ボタンを使う方法もまだ実装していませんが
チャレンジしてみようと思います、ありがとうございました!
862 :
859 :2008/02/28(木) 15:35:13 ID:TeW7v/bR
スレ汚し失礼しました。 そのままreplaceで出来ました…
ソースは次レスで書きます。sqliteでuser.dbってファイルを作ってそこに CREATE TABLE user(no INTEGER PRIMARY KEY, id TEXT, mail TEXT, sex TEXT, home TEXT); っていうテーブルを作って、データを読み込もうと思ってるのですがgetData実行時に SQLError: 'Error #3115: SQL Error.', details:'no such table: user', operation:'execute' at flash.data::SQLStatement/internalExecute() at flash.data::SQLStatement/execute() at DatabaseManager/getData()[/Users/hoge/Documents/Flex Builder 3/Account/src/DatabaseManager.as:47] って言われてしまう。no such table:userっていってるのでdbfileはopenできてる はずなんですが… MacOSX10.5.1 SQLite version 3.4.0 AS3(Flex3SDK)
ある程度端折ってますが、以下のソースです package { private var connection:SQLConnection; private var stmt:SQLStatement; public function onCreationComplete(e:FlexEvent):void { connection = new SQLConnection(); var dbfile:File = File.applicationStorageDirectory.resolvePath("user.db"); connection.open(dbfile); } public function getData(e:MouseEvent):void { stmt = new SQLStatement(); stmt.sqlConnection = connection; stmt.text = "select * from user"; stmt.execute(); } }
すみません、補足です。 onCreationCompleteには view.select.addEventListener(MouseEvent.CLICK, getData, false, 0, false); という一文がありまして、クリックイベントを拾ってgetDataが実行される 流れになってます。勢い余って省略してしまいました
自己レスすみません。解決しました… applicationStorageDirectoryとapplicationDirectoryの使い方を 完全に間違ってました。 var dbfile:File = File.applicationStorageDirectory.resolvePath("user.db"); を var dbfile:File = File.applicationDirectory.resolvePath("user.db"); にした事で解決しました。しかしあのエラーだとわからん…
connection.open のデフォルトがcreateだったはずだからエラーでないと思うよ。 StorageDirectoryにも生成されてるはず。 readとかにしてあげればいいんじゃないの?
Embedを使って読み込んだ画像ファイルのサイズを変更して staticなBitmapDataに格納したいんだけど、どうすればいい? draw()を使えば伸縮できるんだが、サイズを指定したいんだよね 457*363の画像ソースを640*480のBitmapDataに・・・みたいな matrixで伸縮倍率じゃなくて、サイズ指定のやり方とかあんのかな bmd.widt=640; とかやると「プロパティは読み取り専用です」とか出るし もうワケワカメ
AS2.0、flash8です ページ下方にあるメニューバーを、ウインドウの高さが510未満になった時にウインドウの下端にピッタリ沿うようにしているのですが、 510以下の高さになってる状態でウインドウを最大化すると、メニューバーがその場に止まってしまいます 一度縮小状態にしてウインドウのサイズを可変させるとまた沿うようにはなるのですが… どのようにすれば最大化をしてもちゃんとウインドウの下端にそのまま沿うようになるのでしょうか? function StageSetting() { if(Stage.height < 510) { menuBar_mc._y = Stage.height - naviBar_mc._height; } } mainStageSetting(); StageCheck = new Object(); StageCheck.onResize = function() { StageSetting(); } Stage.addListener(StageCheck);
870ですがソースが別のflaとごっちゃになっていました、すみません function stageSetting() { if(Stage.height < 510) { menuBar_mc._y = Stage.height - menuBar_mc._height; } } stageSetting(); stageCheck = new Object(); stageCheck.onResize = function() { stageSetting(); } Stage.addListener(stageCheck);
フラッシュゲーム作ろうとしてるんだけど分からないことがあるんで質問 ヒットテストでAがBにヒットしたときAはBに重ならない(いわゆるBは壁)ようにできる ASを教えてください><
>>872 Aが移動する前に元の位置を変数に一時保持しておいて
Bにヒットした時はその保存した値を代入して元に戻す。
もしくはヒットした時にAの端とBの端が同じになるようにAの座標を調整する
質問させてくだしあ Flashって、関数hogehogeを処理中に関数bananaを呼び出された場合 関数hogehogeの処理が終わるまで関数bananaの処理は保留すると言うことでよろしいですか?
hogehoge内からbananaを呼び出す以外に、bananaを割り込ませる事はできないよ。
現在Flashでの説明動画を作っています。 仕様は下記のとおりです。 ・Flash上で動画を流す。 ・任意の場所で一時停止し、説明文を流す。 ・説明文が流れ終わったら、一時停止した位置から再び再生する。 説明文に関しては、停止した位置でMCで流せばいいのかと考えています。 ただ動画の一時停止、再生に関しては、やり方がわからず、困っております。 調べてみたところ、ボタンを使用して、一時停止、再生のやり方はわかったのですが、 ボタンを使わず、任意の場所で一時停止、再生するやり方がわかりません。 どなたかご存知の方は、ご教示いただけますと助かります。 よろしくお願いします。
>>876 説明用動画をflvで起こして、キューポイントを設定して、そこでイベント処理すればいいよ。
バージョン書いてないけどFlashなら、FLVPlaybackあたりをヘルプで調べてみるとサンプル
あるんじゃないかな。
直接ActionScriptとは関係ない話でスレ違いだったらごめんなさい。 Flash 8 Professional で、ムービクリップをダブルクリックして 中に入る時に四角い点線がゆっ〜くりとカクカク拡大するアニメーション が表示されます。ものすごいストレスです。これって正常でしょうか? FlashMXの時代はこんなことなかったのに。同じ症状の人いますか?
>>878 それはVistaを使用しているからだな。
[アプリケーション]
Macromedia Flash 8
[症状]
Flash 8で制作していると、シンボルをダブルクリックすると拡大/縮小の画面効果があるが、これがとても遅く表示され、制作効率がとても悪くなってしまう。
[回避方法]
1.[コントロールパネル]-[パフォーマンスの情報とツール]を開き、タスクにある「視覚効果の調整」をクリックする。
2.視覚効果タブに表示されるリストの中にある「デスクトップ コンポジションを有効にする」のチェックを外し、「OK」で閉じる。
>>879 直りました!!マジうれしいです!!ありがとうございます!!
まさかVistaが悪さをしていたとは思いませんでした。
FlexでparseBooleanみたいなStringをparseする標準メソッドはないですか? 自分で実装しても良いのですが、もし標準で用意されていれば、 そちらを使った方が良いので。
ところでswitch文で範囲指定条件はどうやって書くの? if (a < 10) { b = 1; } else if (a < 20) { b = 2; } else { b = 3; } をswitchで書くとどうなる?
>>883 switch (true) {
case a<10 :
b = 1;
break;
case a<20 :
b = 2;
break;
default :
b = 3;
}
886 :
Now_loading...774KB :2008/03/05(水) 12:00:54 ID:MQnBmQ1n
for(i = 0; i<30; i++) { vb[i].onRollOver = vbRollOver; } function vbRollOver() { trace(typeof(this)); //movieclip trace(this._name); //:'_name' という名前のプロパティはありません。 } as2.0で、vb[i]に格納されているmovieclipの名前を調べたいのですが、_nameの所でエラーが出てしまいます これはどのように訂正すると動いてくれるのでしょうか?
>>886 配列vbはどうやって定義しているの?
var vb:Array = [ m1, m2, ... ];
で試したらエラーに成らなかったよ!
>>886 コードがどうなってるのかよく分からんけど
trace(this._name);
じゃなくてとりあえず
trace(this);
で何が返るかチェックしてみたら
>>886 問題ないです。
vb = new Array();
for (i=0; i<10; i++) {
//--MC作成--//
vb[i] = this.createEmptyMovieClip("test"+i, this.getNextHighestDepth());
r = 255-30*i;
g = 255-20*i;
b = 255-10*i;
colornum = "0x"+(r << 16 | g << 8 | b).toString(16);
vb[i].lineStyle(1, 0x000000, 100);
vb[i].beginFill(colornum, 100);
vb[i].moveTo(0, 0);
vb[i].lineTo(50, 0);
vb[i].lineTo(50, 50);
vb[i].lineTo(0, 50);
vb[i].lineTo(0, 0);
vb[i].endFill();
vb[i]._x += 25*i;
vb[i]._y += 25*i;
//----------//
//
vb[i].onRollOver = vbRollOver;
}
function vbRollOver() {
trace(typeof (this));
trace(this._name);
}
レスありがとうございます
>>887 var vb:Array = new Array();
for(i = 0; i<30; i++) {
vb[i] = 貼り付け先のmovieclip.attachMovie(貼る付けるmovieclip);
vb[i].gotoAndStop(1)
vb[i].onRollOver = vbRollOver;
}
一部省略して書いていましたが、ソースはこんな感じになっています
ロールオーバー指定のforの前にattachMovieで貼り付けてvbに代入しています
886の
vb[i].onRollOver = vbRollOver;
の部分を
貼り付け先のmovieclip[(貼り付けたmovieclipをアクセス演算子で指定)].onRollOver = vbRollOver;
と配列からじゃなくmovieclipを直に指定してみたのですが、結果は886とまったく同じでした
>>888 function vbRollOver() {
trace(this);
}
の結果は
_level0.貼り付け先のmovieclip.貼り付けたmovieclip
でした
>>889 ソースをコピペさせてもらって実行してみたら動きました・・・
リンゲージしたmovieclipをattachMovieしているのでその辺りに問題があるのかもしれません
>>890 ×リンゲージ
○リンケージ
attachMovieしてもちゃんと名前出るけど?
省略しないで、正確にASを書いてくれた方が解決に繋がると思う。
892 :
Now_loading...774KB :2008/03/05(水) 22:16:59 ID:o4TizaKy
ここで聞いてもいいのか分からんけどとりあえずポスト。 Flash Develop 3.0.0 beta5(WinXP HE SP2)の起動時に、 Error binding to target method. at System.Delegate.CreateDelegate(Type type, Object target, String method, Boolean ignoreCase, Boolean throwOnBindFailure) at FlashDevelop.Managers.StripBarManager.GetEventHandler(String method) っていうエラーメッセージが出るんだけどどうすれば出ないようになるんでしょうか? このエラーが出たあとは通常どうりつかえることは使えるんですが気持ちが悪いのでどうにかしたいです。
>>892 JDKのバージョンは?
1.6以上じゃないと駄目だよ
895 :
Now_loading...774KB :2008/03/06(木) 21:44:38 ID:3+HDPoa6
AS3でムービー全体のマウスイベントを一時的に受け付けなくしたいときに、 mouseEnabledプロパティを使ってできない?
896 :
895 :2008/03/06(木) 22:03:20 ID:3+HDPoa6
自己解決しました。 (root as MovieClip).mouseChildren = false でいけました。
897 :
895 :2008/03/06(木) 22:16:50 ID:3+HDPoa6
(root as DisplayObject).mouseChildren = false で動作しないのはなぜ?
>>897 たぶんコンテナじゃないとchildrenが持てないからじゃない?
(root as DisplayObjectContainer).mouseChildren = false
あと、ムービー全体だったら、作りにもよるけどstageでストップさせといたほうが確実かもね
900 :
Now_loading...774KB :2008/03/06(木) 23:40:14 ID:YGhucCh1
AS3.0 Flex3 TextInput等入力コントロールで ・数値チェック ・全角のみ許容 を行いたいのですが、何か方法ありますでしょうか? よろしくオネガイシマス。
901 :
Now_loading...774KB :2008/03/07(金) 00:33:35 ID:oUt7IIqv
http://www.hoge.com/index.cgi?data=1 みたいな感じでデータを送信できるじゃないですか
index.cgiが吐き出すHTMLの中にはhoge.swfがあって
そのhoge.swfがGETのデータを受け取ることってできますか?
ググってみたんですけど
swfからGETやPOSTで送信する方法しかなくて
受け取るのが見当たらなかったので出来ないのかなと。
>>900 //全角数値のみ入力許可
textInput.restrict = "0-9";
みたいなことかな?
>>900 >>904 textInput.restrictには大文字小文字の識別バグがあるから、
現状ではなるべく使わない方がよさげ。
リアルタイムでやりたければ、changeイベントにRegexpのバリデータをaddEventlistenerでアタッチ
するとか、Validatorクラスを継承したカスタム検証クラス実装してTextInputインスタンスを
sourceにバインドしちゃえばいいかと。
リアルタイムじゃなければTextInput.textを処理するタイミングでRegexpクラス使ってtest()しちゃえば
OKかな。そこはアプリレベルで何をやりたいかによるけれど。
定期的に入力内容チェックして、そぐわない部分があったら フィールドの下にエラー表示して、確定ボタン無効化という手は?
テキストフィールドにフォーカスある時って、keyDown系の イベントって拾えないんだっけ?
908 :
901 :2008/03/07(金) 11:04:38 ID:iEPvkSQj
909 :
901 :2008/03/07(金) 11:41:36 ID:iEPvkSQj
>>907 調べてみたらtextInputっていう使えそうなのあった。
keyDownも使えるけど、イベントがキャンセルできない(文字入力キャンセルできない)
ので、こっちの方がよさげ。こんなところかな?
/*テキストフィールド「msg」に対して全角0−9以外の入力をキャンセル*/
var reg:RegExp = /[^0-9]/;
msg.addEventListener(TextEvent.TEXT_INPUT,hoge);
function hoge(e:TextEvent) {
//入力キャンセル
e.preventDefault();
//以下、置き換えて自前で追加
var tf:TextField = e.target as TextField;
var v:String = e.text.replace(reg,"");
tf.appendText(v);
tf.setSelection(tf.text.length,tf.text.length);
}
911 :
Now_loading...774KB :2008/03/07(金) 13:08:38 ID:ZyM4/ifn
質問お願いします。VistaでCS3使ってます。 外部の音楽ファイルを取り込みたいと思い、下記のプログラムを試してます。 FLASH始まったら音楽を鳴らしたいのですけど、下記の感じでタイムラインの 5フレーム目に入れたらongaku1という音楽が鳴ると思ったのですが鳴りません。 始まって5フレーム目を通過したらongaku1というライブラリの音楽を鳴らすには どうしたらよいのでしょうか? var mySound:Sound=new Sound(); mySound.loadSound("ongaku1",true); mySound.start(); };
attachSoundだよ
913 :
Now_loading...774KB :2008/03/07(金) 14:05:20 ID:1nacqWEW
flashMXです
http://1art.jp/flash2/chapter/33/33.htm ↑このページを参考に勉強しているのですが、ボタンを設置してボタンスクリプトを下記
on (release) {
this.attachMovie("car", "car_mc", 0, {_x:191, _y:268});
}
のようにしたら、ボタンを押すとその押したボタンを中心座標(0,0)からの位置として表示されます
しかもムービークリップのはずが押したボタンと同じとして機能しています
これは自分が間違っているのでしょうか?ページの説明が間違っているのでしょうか?
基本的にはページの説明どおりに記述しているのでなぜこうなるのかわからないのです
またこのような現象になる原因として考えられるものはありますか?
MovieClipツリーは下層のプロパティの影響を受けるよ
>>913 試してないが、もしかしてボタンじゃなくてMCにそのスクリプトを書いてるのでは?
MCなら、thisは押したMCのことを指すので、そのMCを中心にattachされる座標が
決定されるのは当然。
また、MCにattachされればattachされたものも、もとのMCの一部になるため
それをクリックすれば、MCをクリックしたとみなされて同じアクションが実行される。
>>914-915 ありがとうございます
MCにではなくボタンに記述してるんですが、少しわかってきました
913の文とは別にif文を入れているのですが、それが影響してるようです。
if文は
if (chk == 2) {
chk = 1;
} else {
chk = 2;
}
です。
これを削除したらボタンの機能はなくなりましたが、呼び出したボタンを中心座標にするのは直ってないです。
こういうもんだと理解します。
ありがとうございました
タイムラインで動いているムービーが終わったら、 外部ファイルswfを再生させる方法はないでしょうか? on (release) { loadMovie("□□□.swf",_root.loadpoint); } のように、マウスをクリックしたら外部ファイルswfを再生はできたんですが、 クリックなしで、出来る方法を教えてください。
すいません、自己解決しました。失礼しました。
Flash8 AS2 createTextFieldしたものを消すにはどうすればいいんでしょうか。 removeMovieClipでテキストフィールドは消せず、 どのようにしたらいいか教えて下さい。
removeTextField
>>920 ありがとうございます。
ヘルプのcreateTextField関連項目に出なかったので気がつきませんでした。
助かりました。
質問させて頂きます。
一度、他のスレッドでも質問させて頂いたのですが、
解決しなかったことと、こちらのスレッドのほうが的確と思い、もう一度質問させて頂きます。
Flashでカレンダーを作成している所でして、
まずは他の方が作ったカレンダーのスクリプトに、
追記や変更を行って勉強している所です。
そこで下記のURLにあるカレンダーを触ってみていたのですが、
今日の日付の色を変える記述と、祝日の日付の色を変える記述が解りません。
if文等で日付と月を参照して、テキストカラーを変えるであろうということは解るのですが、
肝心の文字色変更のスクリプトがわかりません。
よろしければ教えて頂けないでしょうか?
参考URL:
http://hfm-kenchan.com/Lesson/log_qa/D0304073.htm こちらに下のほうに置いてある、赤い背景のカレンダーを触っています。
923 :
Now_loading...774KB :2008/03/07(金) 18:54:44 ID:ovq6TJQD
>>922 昔、やったことあるわぁ〜
祝日は元々色がついているんじゃなかったっけかな。
こんな感じで一応祝日はわかるけどな。
テキストを入れる時の処理にこんな感じ
if ( i == 1 || i == 8 || i == 15 || i == 22 || i == 29 ){
DayArray[ i ].name = "holiday";
}
FLVPlayBackを複数ステージに置いた状態で 見ていたFLVの読み込みを中断して 他のFLVを再生することはできますか? stop()しても読み込みが止まらなかったので… Flash8です
>>922 そこのファイルそのままですと、
ダイナミックテキストフィールドにインスタンス名がないので
スクリプトで変更しようにも出来ないんじゃないですかね。
個々のダイナミックテキストフィールドにインスタンス名つけて、
他のスレで教えてもらった方法を利用すれば色かえられるはず。
926 :
922 :2008/03/07(金) 19:27:47 ID:In7/R70G
>>923 >>925 早速のお返事ありがとうございます。
DayArrayというスクリプトをよく理解していないのですが、
923様の方法はiが1,8,15,22,29であればholidayとして扱うという形でしょうか?
925様の言うようにまずインスタンス名をつけて、
それらを指定する条件と加えて、my_fmt.color等を使えば良いのでしょうか?
まずは、言われたことを試してきますね。
927 :
922 :2008/03/07(金) 19:54:11 ID:In7/R70G
再び質問させて頂きます。 カレンダーの日付の内、文字色を変えたい日付のインスタンス名をday00としまして、 その文字色を赤色の変えたい場合、下記のスクリプトでは何が足りないのでしょうか? もしくはどこが間違っているのでしょうか? my_fmt.color = 0xFF0000; これにてmy_fmtの色を赤と宣言 day00.setTextFormat(my_fmt); day00をmy_fmtと関連付ける→赤になる 色が変わらずに困惑しております。
>>927 my_fmt = new TextFormat();
my_fmt.color = 0xFF0000;
day00.setTextFormat(my_fmt);
でいけるはず。
929 :
922 :2008/03/07(金) 20:08:30 ID:In7/R70G
>>928 それでも変わらなかったです…。
スクリプトを書く場所が違うのかな…。
これは my_fmt = new TextFormat(); で格納する場所を作成しているのかな?
>>929 MCの2フレーム目のスクリプトの最後に書いて変わったよ。
...
textDate35 = subDate[35];
textDate36 = subDate[36];
//
my_fmt = new TextFormat();
my_fmt.color = 0x0000FF;
day00.setNewTextFormat(my_fmt);
931 :
922 :2008/03/07(金) 20:26:54 ID:In7/R70G
>>930 変わりました!本当にありがとうございます!
あとはif文で祝日の条件(月と日)を指定して、これらの文を実行すれば
希望通りの物が出来そうです!ありがとうございました!
932 :
922 :2008/03/07(金) 21:02:04 ID:In7/R70G
本当に何度も質問して申し訳ありません。 if文にて祝日の色変更スクリプトを打ち込んでみたのですが、 反応しないもので、おかしな所を指摘して頂けませんでしょうか? 下記がこちらの記入した元旦の色変更スクリプトになります。 my_fmt = new TextFormat(); my_fmt.color = 0x0000FF; if(theMonth == 1 && days00 ==1){day00.setNewTextFormat(my_fmt);} これでまず、月が1月であるか、次にdays00が1日であるかを調べる。 もし一致していたのならday00をmy_fmt.colorの色へと変わると思ったのですが…
>>932 うまくいかない時は、とにかくtrace()してみなよ。
どこで期待通りになっていないかが判るから。
days00 ==1 が怪しすぎるんだがw ホントに数値型なのかよコレ。てかday00.textでいーじゃん
935 :
922 :2008/03/07(金) 22:30:40 ID:In7/R70G
>>933 デバックしてみても取得自体はしているようなのですが…
>>934 条件をmonthのみにしてみても昨日しませんでした。
単純に条件の書き方が悪いのかな…
もう少し色々試してみることにします。
>>932 値の追い方を自分なりに考えてみるといいよ
そこだけなら
theMonthとdays00に何が入っているのか
if文はTRUEになっているのかFALSEになっているのか
days00はnullになっていないか
days00のテキストフォーマットは適用されているか
days00にsetTextFormatを適用後テキスト変更していないか
(defautTextFormatに設定されなければsetTextFormatで適用したスタイルは元に戻るはず)
1個1個確認していけば必ずどこかに「あれ?」っと思う箇所があるはず
「ここは〜〜のはず」と思ってる所が一番怪しいと思う事が大事
if (theMonth == 1 && days00 ==1) { trace("色変えるぜ"); } else { trace("色変えない"); } ↑これどうなるの?
>>935 trace()するのは、なにも値の取得だけじゃないよ。
>>936 が書いてる通り、インスタンスの存在、関数の実行、識別子の正確さ等々
すべてを疑ってひとつずつチェックしてみる。
うまくいかないなら、必ずどこかに問題がある。
days00は何者なの?
>>932 確認です。
textに文字列を代入した後にの設定をしてませんか?
もしそうならtextFormatの設定を先に設定してからtextに文字列を入れないとフォーマットが反映されないらしいです。
942 :
941 :2008/03/07(金) 23:57:52 ID:CVhPXo/X
>>941 >textに文字列を代入した後にの設定をしてませんか?
textに文字列を代入した後にtexrFormatの設定をしてませんか?
です
失礼しました。
JavaScriptの分野かもしれませんが、 SWFObjectで表示したFlashの背景色をJavaScriptで 外部から変更する方法はないでしょうか? Flashは既存のさまざまなのを表示するので、Flash自体に 背景色変更のコードを入れられないのですが・・・。
>>943 SetVariableで_root._bgcolorに色指定しても変化無いし
SWFObjectに.style.backgroundColorで色指定しても変化無いし・・・。
HTMLのSWF生成タグを弄るだけで変わったと思うけど。 変わらないならexternalinterface使えば?
Flexで以下の関数だと、"関数は値を返しません"というエラーでコンパイルできないのは仕様ですか? catch内のreturn 0;を、外に出さないとコンパイルできないです。 function hoge():Number { try {return 1;} catch (e:Error) {return 0;} }
function hoge():Number { try { return 1; } catch (e:Error) { return 0; } finally { return -1; } }
>>947 それだと、全部-1が返ると思います。
946の構文は、Javaでは頻繁に見掛ける書き方ですけどね。
function hoge():Number { var retValue:Number = 0; try { retValue = 1; } catch (e:Error) { retValue = 0; } return retValue; }
950 :
Now_loading...774KB :2008/03/08(土) 11:09:05 ID:Yfs5gbe/
>>945 SWF生成タグを弄るとFlashを一旦終了して、もう一度新しくFlashが
再生されます。 その時、確かに背景色は変更されるのですが・・・。
externalinterfaceですか。 初めて知りました。
試してみます!
951 :
Now_loading...774KB :2008/03/08(土) 11:22:06 ID:Yfs5gbe/
>>945 ExternalInterfaceを調べてみたのですが、Flash(AS)側ではExternalInterfaceを
ロードしておけば、HTML-JavaScriptを自由に呼び出せるみたいですが、
その逆、JavaScript側からFlashを見に行くには、ActionScript内でaddCallback
でAS内関数をJavaScriptから呼び出してもよいと宣言しないと使えないみたいです。
今回Flash(ActionScript)側の内容・コードは弄らずに、JavaScriptでFlashの
背景色を変更させたいので、この方法は取れません。
せっかくのアドバイスでしたが、申し訳ありません。
何か他の方法はないでしょうか?
>>948 catchで補足できない型のエラーが発行されたとき戻り値は無いか不定になるから
エラーにしてるんじゃねーのかな
javaとASは違うしw
>>948 ていうか finally で return 1 返せよ。なぜ try で返す?
>>951 タグはbgcolorだけ弄った?それともSWFobjectで生成されるタグ全部弄った?
前者でもダメなら・・・お勧めは出来ないが、wmodeでtransparentを使うしかないんじゃない
Flash側で「色変更のイベント」を認識しないといけない以上、ASを弄れないというのがネック
var tArray:Array = new Array("z","y","x"); var t:Test5 = new Test5(this); t.tstart(); ------------------- class Test5 { var thismc:MovieClip; function Test5(mc:MovieClip) { thismc = mc; } function tstart() { for(var i = 0; i< thismc.tArray.length; i++) { thismc.textbox_mc["t" + (i + 1) + "_txt"].text = thismc.tArray[i]; } } } タイムラインにあるムービークリップや配列なんかをクラスで扱う時に、コンストラクタにタイムラインのthisのみを送って それをパスの起点にして対象を指定する形で大抵の処理をしていたのですが、 処理速度等を考えるなら、基本的に、 var t:Test5 = new Test5tArray, textbox_mc); のようにクラスの処理対象は全てコンストラクタの引数に送って処理する方が良いのでしょうか? AS2.0です。
CS3にて 配列に格納したSoundオブジェクトをインデックス指定で再生する処理があります 再生終了時のイベントにそのインデックスを使いたいのですが var Sound1:Sound = SoundList[ Index ]; var SoundChannel1:SoundChannel = Sound1.play(); SoundChannel1.addEventListener( Event.SOUND_COMPLETE, SoundComplete ); この「SoundComplete」関数のどこに引数「Index」を指定すれば良いのでしょうか? function SoundComplete( event:Event ){ // ここに再生終了時のイベント }
>>954 オブジェクトは参照されるだけだからそんな変わらんと思うけど。
でもクラスとしてはダメじゃね。汎用性に欠ける&Arrayやコントロールの存在が不確か
>>955 単にIndexの数値が欲しいだけなら、Soundオブジェクト生成と同時にどっかに保持すりゃいい。
Indexを使ってSoundオブジェクトを参照したいならevent.targetすりゃいい。
>>953 もちろん、try内部はreturn 1ではなくて、実際はエラーの発生する可能性のあるメソッドを使用しています。
こういう仕様だと思って、catchの外にエラー発生時の処理を書くようにします。
>>956 返信遅くてすいません。
>>955 の書き方だと参照を取得している処理になっちゃっていますね
実際の処理は下記のようになっています。
function PlaySound( Index:uint )
{
var Sound1:Sound = new SoundList[ Index ]();
var SoundChannel1:SoundChannel = Sound1.play();
SoundChannel1.addEventListener( Event.SOUND_COMPLETE, SoundComplete );
}
ここに「鳴ってる最中は再生しない」として別途
if( NowPlaying[ Index ] == true ){
return;
}
という処理を加えようとしたら
再生が終了した時「falseを入れる」のにIndexが無い・・・
となってしまい「SoundComplete」で
終了したのはどの配列の中ではどのデータか分からない事に
クラスのメンバー変数に残しておくと終わる前に別のものが再生されると上書きされてしまいます。
アイディアが貧困で上手く回避する方法が思いつきません。
もう少し詳しく教えていただけないでしょうか
>>956 返信ありがとうございました。
やっぱり構造上は
var t:Test5 = new Test5(tArray, textbox_mc);
のように、処理に必要な要素をちゃんと渡した方がいいですね、ありがとうございました。
NowPlaying[ Index ]の辺りがよく理解できないけど、 いっちゃん単純な考え方で、 var NowPlaying:boolean = false; function PlaySound( Index:uint ){ ( NowPlaying ) ? return : 0; var Sound1:Sound = new SoundList[ Index ](); var SoundChannel1:SoundChannel = Sound1.play(); SoundChannel1.addEventListener( Event.SOUND_COMPLETE, SoundComplete ); NowPlaying=true; } function SoundComplete( event:Event ){ ( NowPlaying ) ? NowPlaying=false : 0; } って感じじゃだめなん
>>957 returnはfinallyかtryの外にないとJavaでもコンパイル通らないよ
理由はコンパイラも教えてくれている通り、値を返さない可能性があるから
返り値の値を調整したいときはtryの外に変数置いてfinallyで返す形で
>>960 Indexには今のファイルだと添え字0〜5に当たるサウンドが随時再生されます。
なのでそれぞれが再生中なのかのフラグを
NowPlaying配列にBooleanで持たせようとしています。
再生時の処理としてNowPlaing[ Index ] = true;で再生フラグを立てておいて
再生フラグが立っている時は再生処理をしないように。
再生終了時にNowPlaying[ Index ] = falseと実行したいのですがその時のIndex値を
なんとか関数の引数から持って来れないかと質問した次第です。
暫定処理として更に関数SoundComplete0〜5を定義してFuncList配列に登録
イベント関数の引数として登録してそれぞれの関数でNowPlaying[ X ] = falseと実行する事にしました。
SoundComplete( event:Event, Index:uint ){}という使い方ができるのかと思ったのですが
そんな使い方はできないのですね。
回答ありがとうございました。
じゃーこれでどうだ var NowPlaying:Array = new Array(5) {false,false,false,false,false}; function PlaySound( Index:uint ){ ( NowPlaying[ Index ] ) ? return : false; var Sound1:Sound = new SoundList[ Index ](); var SoundChannel1:SoundChannel = Sound1.play(); Sound1.index = Index; NowPlaying[ Index ] = true; SoundChannel1.addEventListener( Event.SOUND_COMPLETE, SoundComplete ); } function SoundComplete( event:Event ){ NowPlaying[ event.target.index ] = false; }
964 :
Now_loading...774KB :2008/03/09(日) 12:04:39 ID:+oCOU/He
>>953 再起されるのは後者ですが、前者は反応ありませんでした。
flashのオブジェクトidに.wmode="transparent"しても反応ありませんでした。
どうしようもないので、そもそものSWFobjectで生成する段階から仕様変更
してもらいます。
ありがとうございました。
>>963 ちょっと分からないのですが
サウンドチャンネルクラスを継承したクラスを作成して
indexをメンバー変数に追加するということでしょうか。
(違ってたら申し訳ないです)
しかしその発想はありませんでした。ちょっと試行してみようと思います。
ありがとうございます。
ActionScript3.0です。 UILoaderに外部swfを読み込む機能って重複して使えますか? ・1.swfのボタンAを押すとUILoader(fieldAとする)に2.swfを読み込む。 ・2.swfのボタンBを押すとUILoader(fieldBとする)に3.swfを読み込む。 ・3.swfのボタンCを押すと・・・ どうしても、2回目(3.swf)を読み込む段階で失敗します。 htmlでいうと、メニューとメイン画面をフレーム分けして メイン画面を更にサブメニューとメイン画面でフレーム分けするのを FLASHだけで作りたいのですが、無理でしょうか?
入れ子にする必要あるのか? メインでLoaderでそれぞれ読み込んで配置するんでいんじゃね
AS3ですが 多次元配列を宣言する時に、PHPのように $arr = Array( "key"=>"val", "key2"=>"val2", "key3"=>"val3", "key4"=>"val4", … "key10"=>"val10" ); //$arr[key4] == val4 みたいな宣言って出来ませんか?
>>968 多次元配列じゃなくて連想配列(ハッシュ)かな?
var obj:Object = {
"key1":"val1",
"key2":"val2",
"key3":"val3"
};
trace(obj.key1) //val1
trace(obj["key2"]) //val2
外部ファイルの読込みについて教えてください。 actionscriptで、 JPG画像を読み込みように、PDFファイルを読み込むことは可能でしょうか? actionscript3.0です。 flash cs3 です。
>>971 バイナリファイルとしては読み込めるけど、PDFとして表示はできないんじゃね?
PDF読み込んで何したいのさ
>>973 どこにそれがPDFなんて書いてあるんだ?
つーかどうみてもgif画像な訳だが。
>>947 あなたのおかげでなぞがすべてとけました。
>>972 Flashで使ってるのはただのデカい画像じゃね?
PDFも画像データだけみたいだし
そういや、FlashPaperってどこいったんだろうな
AS2.0で、タイムラインのトゥイーンはほぼ使わずスクリプトで制御し制作しています flash8のムービープレビューで見ると動きはスムーズなのに、パブリッシュされたswfを自分が用意したhtmlに貼り付けて表示すると 軒並み動きはカクカクした状態になってしまってます、パブリッシュ時にswfと一緒に作られたhtmlで表示しても同じです それぞれのswfの容量は数十kb程度です、画像等はスクリプトで外部ファイルを読み込んでいます この動作の原因は、やはりスクリプト処理が重いからこうなってしまうのでしょうか?、そして、重さを軽減する用にメモリの使用状況?等を調べる方法はありますか?
>>978 WinIEならwindow modeのバグってこともあるが、どうよ?
<param name="wmode" >のvalueがどうなってるかチェック。
それと、Flashの動作が遅くなる要因の大部分は描画処理であって
スクリプトはあんまり関係ないことが多い。
アルファ、グラデーション、トゥイーン等の多用や複雑なベクター画像の表示は
高負荷なので、多用しすぎに注意。
>>979 レスどうもです
表示をIE7とfirefoxでやっていますが、用意したhtmlにはwmodeの指定はありませんでした
指摘された中ではスクリプトのトゥイーン(tweenクラス等使用じゃなく、enterframeで値をずっと足していき、一定になったらdeleteする手動タイプ)
そしてアルファの増減は演出として頻繁に行っています、この辺をもっと考えてみた方がいいのかもしれませんね
あと似たような事ですが、ムービープレビューでは動くのにダウンロードシュミレートでは途中で処理が止まったり
IEではボタンのロールオーバーが問題無く起こるのに、firefoxではボタンにマウスを置いても全く無反応だったり・・・
こういった挙動の違いが、特に外部jpg・swf読み込む処理関係で結構起こるのですが、これもよくある事なのでしょうか?
htmlと違ってflashは、ブラウザごとの挙動の違いは殆ど無い物なんだと思い込んでいたのですが・・・
>>980 ブラウザ毎の挙動の違いはある。
例えば先のwmodeはIEだとopaqueにした方がいいぜとか
よく言われるけど、それだとFireFoxだとテキストボックスで
日本語が入力できなくなったりする。
スクリプトの記述方法がセオリーからちょっとでも外れると
挙動不審になったりとかあるから、この辺は試行錯誤というか
ノウハウなところだね。
とりあえずCS3のFlashのダウンロードシミュレートはマジウンコ。 ダウンロードシミュレートを最初からON状態にできないから 通常プレビュー → ダウンロードシミュレートという流れになるけど このダウンロードシミュレートの時、よく分からんが 前の通常プレビュー時に作られたインスタンスか何かが残るらしくて、 自前でやってたトグルボタン処理でボタンを押したら イベント受け取るインスタンスが2つあるらしくて 1フレーム中にON→OFF→ONと状態遷移しやがった。 本編をローダー介してやっても確かダメだった記憶が。 この不具合、話題にも上らないからほとんど使われてないんだろうけど、 どうにかならんものか。
>>980 ダウンロードシミュレートとかプレビューは
あくまでも仮の動きであって参考程度と割り切ったほうがいいと思う。
外部読み込みをしてるなら確実に読み込み完了を待ってるかな?
ちゃんとやっているならすまんが、読み込み完了を待たずにアクションを実行させると
意図しない挙動になるよ。
ブラウザによって読み込み速度等が違うので、うまくいくブラウザも
あったりするが、本来それは「たまたまうまくいっている」だけ。
>>981-982 ソフトやブラウザでの挙動の違いって結構あるもんなんですね・・・
書き方のセオリー取得には海外の著名な人が出している書籍などでしょうか
自分の場合は、エラーが出たらクラス名をネット検索して、とにかく動いたら良しといった流れでやってきていたので
セオリーなスクリプト表記という面を考えるととても自信が無いです
度々質問ですみませんが、"MovieClipLoaderでswfを読み込んで、読み込み終わった後に読み込んだswf側のトゥイーンを開始する”
といった場合どう処理してますか?
自分の場合は
onLoadCompleteの箇所の処理で
loader_mc.playStart();
loader_mc ←読み込んだswfを表示させるムービークリップ
playStart(); ←読み込んだswf先に書いてあるトゥイーンさせる関数
読み込んだswf先にトゥイーン処理を開始する関数を用意して、読み込みが終わったらその関数を実行
・・・この方法も、試しにスクリプト書いて見たら動いたというだけで、それ以降ずっとこの方法でやってきていましたが
985 :
Now_loading...774KB :2008/03/11(火) 23:59:01 ID:PZNmzB+P
onLoadCompleteの箇所の処理で loader_mc.play(); じゃだめだったっけ?
>>982 >イベント受け取るインスタンスが2つあるらしくて
ホントに?自分で作ったバグじゃなくて?
988 :
Now_loading...774KB :2008/03/12(水) 02:34:36 ID:AgPAuDeT
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) 線の削除で質問です。 複数の点(MC1,MC2,・・・)を連結する複数の線の内、1つを削除する方法 にはどのようなものがあるのでしょうか? 例えば、 ●−●−●−●−● を ●−● ●−●−● のようにしたく思っています。
複数の線なら、簡単だろ・・・。普通に消せばいいじゃん。 それが一つの線ならばちょっとした工夫は必要かもしれないけど。
>>989 ,990
どうも。
線は、for文でmoveTo(), lineTo() を繰り返し使って、MC1→MC2 MC2→MC3 ・・・
と描いています。
clear()を使うと全部消えてしまうので、ピンポイントで消したく思っています。
994 :
Now_loading...774KB :2008/03/13(木) 11:56:44 ID:8EMAQP/g
Flash8 AS2.0 this.attachMovie("MC", "MC", this.getNextHighestDepth()); // var someListener:Object = new Object(); someListener.onMouseUp = function() { MC.removeMovieClip(); trace(this); trace(_parent); trace(this._parent); this.attachMovie("MC2", "MC2", this.getNextHighestDepth()); }; Mouse.addListener(someListener); MC2をMCと同じ階層に置きたいのですがこういった場合、 どのようにパスを指定すればいいのでしょうか。 外部SWFで読み込まれる側なのでなるべく絶対パスは使いたくないんですけど、 読み込む側のSWFとあわせて絶対パスで指定するしかないんでしょうか。
同じ階層ってのがわからん。同じコンテナってことか? 当然深度があるから同じ深度は無理だよね。
>>994 普通に
attachMovie("MC2", "MC2", getNextHighestDepth());
でいいんじゃね?
this使いたいんなら
var someListener:Object = new Object({targetMC:this});
とでもしておいて、
this.targetMC.attachMovie("MC2", "MC2", this.targetMC.getNextHighestDepth());
とかで。
>>996 おおーっ!できました。
thisとか指定なしでもいけるんですね。
someListenerに{targetMC:this}で渡す方法勉強になりました。
ありがとうございました。
次スレ用意しろ
埋め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。