ActionScript 誰かが物凄い勢いで解答するスレ 17at SWF
ActionScript 誰かが物凄い勢いで解答するスレ 17 - 暇つぶし2ch112:Now_loading...774KB
07/08/27 20:37:10 pACmOEd0
classBに
static function test1(){
 A.test1()
}
がないとエラーになんじゃないかなそれは。

113:Now_loading...774KB
07/08/27 20:41:29 pACmOEd0
>>111
moviecliploaderのonloadinitをヘルプで調べるんだ
読み込み開始後すぐにはそ見込み後のサイズは取得できないはず

114:Now_loading...774KB
07/08/27 21:03:03 +KoBV6ub
>>112
継承してもBからはAの静的関数は実行できない仕様、と捉えて良いのでしょうか

AS2.0と同じように扱えると思っていました、解答ありがとうございます。

115:111
07/08/27 21:13:41 /CIW+tvt
>>113
早速のレス有り難うございます。ヘルプを読み、ましたが
「ロード対象クリップの先頭フレーム上のアクションが
実行されたときに呼び出されます。」

の意味が分かりません。別の表現だとどうなるのでしょうか?

116:Now_loading...774KB
07/08/27 21:21:13 pACmOEd0
>>115
「完全に外部ムービーが読み込まれ、画面に表示され、幅や高さなどをスクリプトから取得できる
準備ができたら、このイベントハンドラに指定しておいた処理が実行されます。」ってこと。
つまり、このイベントが起きる前に幅や高さを取得しようとしても、まだ読込中なのでundefinedになるってこと。
イベントハンドラって何?ってのはがんばって勉強してくれ、としか言えない。

117:111&115
07/08/27 21:22:57 /CIW+tvt
>>116
さんきゅうです。引き続き、やってみます。
とりあえず、画像は表示されます。

118:111&115
07/08/27 22:11:29 /CIW+tvt
(連投すいません)
MC:stageMのイベントハンドラとして
this.onLoadInit = function() {
trace("-OK-");
};

を書きました。JPGの読み込みが終了したら出る筈なのですが、
5秒位待っても -OK- が出ません。

119:Now_loading...774KB
07/08/27 22:23:15 AajI9Cl/
>>118
onLoadInitはMovieClipLoaderクラスのリスナーだから
そのASでは何秒待っても-OK-はでません。
ヘルプでMovieClipLoaderを調べるんだ。そしたら例が載ってるから。

120:Now_loading...774KB
07/08/28 00:10:30 LKGdZc2X
>>114
URLリンク(www.fumiononaka.com)

121:111&115
07/08/28 01:16:14 erJeZUhX
>>119
度々ありがとうございます。
ヘルプと本を見てrootのイベントハンドラとして下の様に書きました。

myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-");
};
myJpg.addListener(mcListner);

相変わらず画像は出ますが、まだOKが出ません。
重ね重ね申し訳ありません。間違いをご指摘願います。

122:Now_loading...774KB
07/08/28 01:35:20 hlBUaXHU
>>121
画像を読み込みたかったんじゃないの?そのASは何を読み込んでるの?
ヘルプに載ってる例をまるまるコピーすればいいと思うんだけど。
あと試すときはローカルじゃなくてweb上でね。

123:Now_loading...774KB
07/08/28 01:38:13 hlBUaXHU
>>121
あ、ごめん画像は出んだ。
web上で試すときはtrace()使えないからテキストフィールドとかに出力。

124:111&115
07/08/28 02:48:43 erJeZUhX
>>122-123
一旦話をまとめたいと思います。

目標: MC(stageM)にロードしたJPGの大きさを取得したい(最初は横幅のみでOK)

流れ:
this.stageM.loadMovie(name1+".jpg");//MC:stageM(300*300)に読み込む
※これは可能

  ↓
MovieClipLoader.onLoadInitイベントリスナーを使って画像情報を取得したい
rootのイベントハンドラとして:

myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-"); //動作確認でOKを出す
};
myJpg.addListener(mcListner);

  ↓
しかし、このOKが出ない。

改めて、問題点のご指摘を願います。

125:Now_loading...774KB
07/08/28 03:08:18 hlBUaXHU
>>124
myJpg.loadClipが無いんじゃない?
試すときはローカルじゃなくてweb上で。

126:111&115&124
07/08/28 04:01:21 erJeZUhX
>>125
有り難うございます。幅が取得できました。
関連ASは以下の通りです。

myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-");
trace("wide= "+stageM);
//
ok = "-OK-";//テキストフィールドokに出力
wide = stageM._width;//テキストフィールドwideに出力
};
myJpg.addListener(mcListner);

on (press) {
myJpg.loadClip(name1+".jpg", stageM);//MovieClipLoaderクラス用にloadClip()
}

Web上の動作を推奨されていますが、ローカルでも wide= 200 と、JPG
の横幅が得られました。

重ねて御礼申し上げます。

127:Now_loading...774KB
07/08/28 14:24:19 QxMZY+P1
よろしくお願いします。
winXP/FlashCS3/AS2.0です。

mainMCがクリックされた際、
mainMCの中にsubMCを複製したいです。
MCの中にMCを複製する事は可能ですか?

mainMCに下記を記述してみましたがMCは複製されませんでした。

on (release) {
_root.mainMC.duplicateMovieClip(_root.subMC,"subMC_d",dep);
}
※depは複製されたMCの通し番号が入ります

どのように記述すればMCの中にMCを複製できるのでしょうか。


128:Now_loading...774KB
07/08/28 18:08:07 Dv9/WtcH
>>127
_rootにsubMCがない
MCにsubMCという名前がついていない(プロパティ)
生成するMCの名前が同じ

気になるのはこんなところ。

129:Now_loading...774KB
07/08/28 23:10:41 NsBwdnrq
FLVを再生時に、再生している途中で、
また頭から再生したいという場合は、どのような記述を
すれば実現できるのでしょうか?

現在、ボタンに以下のようなスクリプトを記述しているんですが
反映されません。 ムービーの再生が終了すると反映されます。
宜しくお願いします。

ボタン//
on (press) {
my_FLVPlybk.play();
}

//FLV再生命令(フレームアクション)
import mx.video.*;
my_FLVPlybk.autoPlay = false;
my_FLVPlybk.contentPath = "test.flv";
var listenerObject:Object = new Object();
listenerObject.ready = function(eventObject:Object) {
my_FLVPlybk.seekSeconds(0);
my_FLVPlybk.play();
};
my_FLVPlybk.addEventListener("ready", listenerObject);

130:Now_loading...774KB
07/08/29 12:16:15 UEebW6WD
AS初心者ですが質問させてください
WinXP,FlashMX2004使ってます

ゲームを作っていて、LANで繋がれたパソコン同士でハイスコアを表示させたいと思っています。
loadVariablesでテキストファイルから変数を読み込んで、(hscore=1000のように)
それをhiscore=parseFloat(hscore); で変換するとhiscore=NaNになってしまいます。
変数のリストアップをするとhscore="1000"は読み込めています。
恐らく面倒なことをやっているような気がするのですが、
何かいい方法は無いでしょうか?
お願いします。

131:130
07/08/29 12:19:35 UEebW6WD
連投すいません。訂正でパソコン同士ではなくてローカルサーバーに繋がっています

132:Now_loading...774KB
07/08/29 12:32:39 si3eNAOb
>>130
Flash単体では書き出しが出来ないので、CGI(PHPとか)をLoadVarsで使って、
サーバーのテキストファイルに書き出し、読み込みをする。

133:Now_loading...774KB
07/08/29 13:07:53 Vvfpu2qg
>>130
スコアが整数のみなら、
hiscore=Number(hscore);
でもいいと思うけど。
ただ、parseFloat関数でも
hscoreに"1000"が入ってれば数値に変換されるはずだから、
関数呼び出し位置に問題があるような気がする。

試しにテキストの内容に関わらず、parseFloat関数呼び出す直前で
hscore="1234";
hiscore=parseFloat(hscore);
とhscoreに直接文字列突っ込んだ後parseFloatするなりして、その結果を見てみたら?

134:Now_loading...774KB
07/08/29 18:59:09 ryuPbw4d
厨房みたいな質問で悪いんだが、ホンキで気になったので質問させてほしい

ニコニコ動画のコメントのID割り出しツールがあるけど、あれって一体どういう仕組み・・・?
コメントCSVやチャットサーバからのレスポンスに、実はIDも記述されてて、
それを取得するような改造版FLVPlayerを、標準Playerとすり替えてUIにしてるのかな?

予想で構わないので何かレスポンス希望

135:Now_loading...774KB
07/08/29 19:05:28 2eY6RUaR
超能力に米俵一票

136:Now_loading...774KB
07/08/29 19:45:13 I2MUZift
>134
IDも送ってくんだよ。ツールに解説あるんじゃね?

137:Now_loading...774KB
07/08/29 20:15:57 lfB2oEQ3
すいません、ひとつ質問させてください。

AS3.0で、Javaサーバーとソケット通信するFlashを作成していて、確立するためのポリシーファイルについて質問です。

function start_connect(address,port) {
Security.loadPolicyFile("xmlsocket://" + address + ":" + port);
socket.connect(address,port);
}

上記の様なコードの時、loadPolicyFileでポリシーファイルを受け取る前に.connectメソッドが動いてしまいそうなのですが、大丈夫なのでしょうか?
loadPolicyFileの戻り値も無いみたいですし・・・。



138:130
07/08/29 20:35:09 UEebW6WD
>>132 >>133
レス遅れてしまいましたが答えて下さりありがとうございます!
まず133の方法で試してみたのですがNumberでもだめでした。NaN
直前に hscore="1234"; を入れてみると1234になったのですが
同じ位置に試しにparseFloat入れてもダメでした…

そこで132さんのCGIについて調べてみた所、それっぽい記述があったので
CGI全く触ったことありませんが、ちょっとがんばってみます。
どこかにサンプルがあればそれを参考にしようと思います。

ありがとうございました

139:Now_loading...774KB
07/08/29 22:06:31 ryuPbw4d
>>137
ポリシーファイル系の処理はLoader系と違って完了するまで優先的に処理されるから大丈夫

140:Now_loading...774KB
07/08/30 00:00:23 obah/Nnl
>>139

なるほど、安心しました。
どうもありがとう!

ネット対戦ゲーム作ってる人って自分以外にこのスレでいますかな。

141:Now_loading...774KB
07/08/30 01:38:51 F5vZDKIg
>>140
むしろ、ゲー製板があるがな。
URLリンク(pc11.2ch.net)

142:Now_loading...774KB
07/08/30 01:45:37 g1hvaqqN
>>141
その板のFLASH系もう過疎ってだめぽ

143:Now_loading...774KB
07/08/30 13:22:29 ljrzh0lg
FlashCS3 AS3

クラスから
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
とかするとstageがnullとかエラーが出てしまいます。

stageなしだとフォーカスが必要とのことですが、
"マウスクリックしてフォーカス"とかなしで
キー入力対応させるにはどうしたらよいですか?

144:Now_loading...774KB
07/08/30 14:06:05 fxDqXm13
意味がよくわからんけど、stageプロパティ使いたいならそのクラスに
DisplayObject含むクラス継承させときゃいいんじゃね?

145:Now_loading...774KB
07/08/30 14:07:55 fxDqXm13
あと、ムービーにフォーカスが無い時のキーボードイベント拾う事は不可能。
それできたらパスワードの入力の時とかにキーのログ拾われるから禁止になった。

146:Now_loading...774KB
07/08/30 14:35:40 ljrzh0lg
>>144
レスありがとうございます。
public function Stopwatch(initTime:Number=3) {
timetotal = initTime*60;
outputText = new TextField();
outputText.text = timetotal;
addChild(outputText);
myTimer = new Timer(1000,timetotal);
myTimer.addEventListener("timer", counter);
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
}
public function keyCheck(event:KeyboardEvent) {
trace(event.keyCode);
myTimer.start();
}

なにかキーを押したらTimerのカウント数を表示するだけのクラスなんですが、
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);

addEventListener(KeyboardEvent.KEY_UP, keyCheck);
とすればカウントが表示されるのですが、
テキストフィールドにフォーカスしないとキー入力を受け付けてくれませんでした。
調べたらstage.を書かないとフォーカスなしでは動かないとのことなので
書いたのですが今度はエラーが出てしまいました。
DisplayObjectを入れろとのことで、
import flash.display.DisplayObject;
としたらエラーは出ないのですがテキストが表示されなくなりました。
stage.addChild(outputText);とかにしても同じでした。

147:Now_loading...774KB
07/08/30 15:06:42 udV3bP6I
そもそもそのクラスは何を継承してるの?

148:Now_loading...774KB
07/08/30 15:32:11 fxDqXm13
こんなで、
package {
import flash.display.Sprite;import flash.utils.Timer;import flash.events.*; import flash.text.TextField;
public class TimePanel extends Sprite {
var myTimer:Timer,_t:TextField;
public function TimePanel() {
_t = new TextField();_t.text = "100";addChild(_t);
myTimer= new Timer(1000);
myTimer.addEventListener(flash.events.TimerEvent.TIMER , counter);
setEvent();
}
public function setEvent() {
if (stage) {
trace("画面に追加されてます");
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
} else {
trace("画面に追加されてません");
}
}
public function counter(e) {
_t.text = String(Number(_t.text)-1);
}
public function keyCheck(e) {
trace(e.keyCode);myTimer.start();
}
}
}

149:Now_loading...774KB
07/08/30 15:33:20 fxDqXm13
うごかすにはこんなじゃね?

var t=new TimePanel()
addChild(t)
t.setEvent()
ようするに、stageまで辿りたいなら表示リストに乗っけないと駄目なんでない?

150:Now_loading...774KB
07/08/30 15:36:42 fxDqXm13
あとは、FlashCS3だったらドキュメントクラスにしときゃ、stageで確実にStage拾えるんじゃね?

151:Now_loading...774KB
07/08/30 16:09:44 ljrzh0lg
>>148-150
これの追加でいけました!ありがとうございます。

stopwatch.setEvent();

public function setEvent() {
if (stage) {
trace("画面に追加されてます");
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
} else {
trace("画面に追加されてません");
}
}

152:Now_loading...774KB
07/08/30 16:19:13 zj2bgIKw
FLASHでflvファイルを消音状態で表示したいと思い、ググッてみたらこの情報を見つけたのですが
URLリンク(www.flash-jp.com)

>MovieClip.attachAudio()メソッドを使って、音源のNetStreamインスタンスを、コントロール対象のMovieClipに接続する必要があります。
> // サウンドコントロールの対象にするMovieClipをmy_mcとした場合
> var my_sound:Sound = new Sound(my_mc);

の辺りがよく分かりません、new Soundのカッコ指定用にストリーミングビデオをMCシンボルに変換が必要?
と思い、ビデオをmy_mcにシンボル変換してみましたが、やはり音は消えませんでした
現状ではムービーは普通に再生されますが、消音できてない状態です
因みにrootの階層にストリーミング形式のmy_videoを配置しています
どなたらアドバイスをお願いします・・・

153:Now_loading...774KB
07/08/30 16:19:16 upfWoDgo
ずっとhtml+JSは書いていて、
最近フラッシュを始めました。
質問ですが、ASでは、

(function(){ trace("asdf") })()

と書いても動かないものなのでしょうか?
環境は、Flash8Pro + MacOSX です。
よろしくお願いします。

154:Now_loading...774KB
07/08/30 16:50:12 udV3bP6I
>>152
変換じゃなくて適当なMCが必要なだけだから空のMC作って指定してあげれば
いいだけ。

155:Now_loading...774KB
07/08/30 16:58:02 zj2bgIKw
>>154
消音されるようになりました!どうもありがとうございます!

156:Now_loading...774KB
07/08/30 17:09:12 fxDqXm13
>>153
8(AS2.0)だとそれは動かなかった気がする。
いまCS3(AS3.0)で試したら動いた。

157:153
07/08/30 17:44:40 upfWoDgo
>>156
ありがとうございました。
うpでーたん買いに行ってきます!
(((;;;:: ;: ;;          ;; ;:;::)) ::)
   ( ::: (;;   ∧_,∧   );:;;;)) )::: :; :))
    ((:: :;;  (´・ω・)っ;;;; ; :))
     ((;;;  (っ ,r どどどど
ど・・・・・
          i_ノ┘

158:Now_loading...774KB
07/08/31 00:27:00 zmW3hsvO
こんばんは。CS3のAS3.0でFLASHを作成しています。
キーボードの操作を作成していてこう記述しました。

stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownEvent);
function KeyDownEvent(event:KeyboardEvent) {
 trace(event.keyCode)
}

この処理でひとまずキーの押下を試していたのですが、
CTRL+ENTERでパブリッシュするとZキーが反応しません。
おそらく「90」が表示されると思うのですが・・・何故か無反応です。
他にもAキー等も利かず。

試しにキーコードをテキストに表示する処理を作り
パブリッシュ後のswfファイルを開くとZキーも反応しました。
このイベントリスナーはCS3でパブリッシュ中に不具合でもあるのでしょうか。

159:158
07/08/31 00:44:58 zmW3hsvO
すいません、Zキーを押すと拡大ツールになるみたいでした。

キーボードのショートカットをオフにしたら反応しました。
しかし、キー全部使うような場合はどうするんでしょう・・・全部オフにするのかな。

160:Now_loading...774KB
07/08/31 01:23:20 3OIPOoFY
>159
糞仕様です。プレビューでショートカットの無効を試してください
この回答で問題は解決しましたか?

161:158
07/08/31 07:59:21 zmW3hsvO
>>160
回答ありがとうございます
ツールのキーショートカットを全部削除したものを作りました。

その質問に「はい、解決しました」を選べた試しがないです(笑)

162:Now_loading...774KB
07/08/31 15:08:43 bEb8PNaZ
ウィンドウズXPでFLASH8を使っています。

createTextFieldでテキストフィールドを作った後に、setTextFormatでテキストフォーマットを指定しています。
その後中のテキストを変えるとフォーマットが勝手に変更(デフォルトへ?)されてしまうのですが何か良い回避方法は無いでしょうか?
今はテキストが変更されるたびに同じテキストフォーマットをぶちこんでるのですが処理の重さの方が気になります

こんな感じです
_root.createTextField("test", 0, 0, 0, 300, 300)
fmt = new TextFormat();
fmt.size = 24;
test.setTextFormat(fmt);
test.text = "1行目\n";
test.text += "2行目";
test.setTextFormat(fmt);//これが無いとテキストフォーマットが解除されてしまう

質問の仕方が下手で申し訳ない・・・

163:Now_loading...774KB
07/08/31 15:12:45 xAIasgsE
setNewTextFormat

164:Now_loading...774KB
07/08/31 15:17:26 bEb8PNaZ
素早い回答ありがとうございます!
試してみましたがこれでかなり処理が軽くなりそうです

165:Now_loading...774KB
07/08/31 16:00:46 hscyW3hW
CS3 AS3で作ってるんですが
Timerで3分のカウントダウンタイマーを作ってるんですが
OSの時計より5秒も遅れてしまいます。
これって普通なんでしょうか?

166:Now_loading...774KB
07/08/31 16:31:25 hyV6m2mV
>>165
タイマー開始は、ボタンのon(press)/on(release)で動作?
on(press)なら押した瞬間からだからね。
1分や10秒のタイマーも試した?

マシンのパワーによっては動作(反応)が遅くなることがあるけど。


167:Now_loading...774KB
07/08/31 17:28:05 Zygq0bfq
もしかして1秒たったら+1するイベントを実行していたりして。

168:Now_loading...774KB
07/08/31 17:39:16 hscyW3hW
>>166
キーアップです。1分で2秒遅れ、10秒なら問題がないくらいです。
ただ、時計とどんどんずれていってしまいますのでイベントのタイミングはないようです。
マシンパワーはPenM1.73GHzなんですがどうなんでしょうか。
スクリプト
public function Stopwatch(initTime:Number=3) {
outputText = new TextField();
outputText.autoSize = TextFieldAutoSize.LEFT;
timetotal = initTime*60;
outputText.text = String(timetotal);
addChild(outputText);
myTimer = new Timer(1000,timetotal);
myTimer.addEventListener("timer", counter);
}

169:Now_loading...774KB
07/08/31 17:40:00 hscyW3hW

public function setEvent() {
if (stage) {
trace("画面に追加されてます");
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
} else {
trace("画面に追加されてません");
}
}
public function keyCheck(event:KeyboardEvent) {
if(event.keyCode == 32 && !keyFlg){
keyFlg = true;
myTimer.start();
}else if(event.keyCode == 32 && keyFlg){
keyFlg = false;
myTimer.stop();
}
}
public function counter(event:TimerEvent):void {
outputText.text = String(timetotal - myTimer.currentCount);
}

です。

170:Now_loading...774KB
07/08/31 18:42:39 xAIasgsE
>>168
currentCountはハンドラが呼ばれた回数だから、それを時間計算につかうのはどうかと。
秒以下なりの端数の丸めが生じるから、表示が秒単位ならずれは1秒のずれは出る。
timerをストップするタイミングとスタートするタイミングでもずれは生じるよね。


171:Now_loading...774KB
07/08/31 18:49:54 VwDRt4nd
ヘルプよりTimer オブジェクトについて
---------------------------------------------------------------------
SWF ファイルのフレームレートまたは Flash Player の環境
(使用可能なメモリやその他の要素) に応じて、
Flash Player ではややオフセットの間隔でイベントを送出できます。
           ~~~~
たとえば、SWF ファイルを 10 fps (1 秒あたりのフレーム数)、
つまり 100 ミリ秒間隔で実行するように設定し、
80 ミリ秒でイベントを発生するようにタイマーを設定すると、
Flash Player ではおよそ 100 ミリ秒間隔でイベントが実行されます。
また、メモリに負荷のかかるスクリプトでも、イベントがオフセットされる場合があります。
---------------------------------------------------------------------
ただし割り切れる数、仮に10fpsで1000ミリ秒間隔で実行するようにしてもずれてくる(と思う)。
Flashに限らずあらゆるプログラムのタイマーイベントは"約"○秒間隔で実行されるものと覚えておいた方が良い。

今回のタイマーイベントは経過時間描画更新用にでもしておいて、
実際何秒経ったかの計算は、タイマー開始時の時間をgetTimer()で取得して保持しておき
描画更新タイマーイベントの度にこの時の時間をこれまたgetTimer()で取得、
そんで保持しておいた開始時の時間との差分を計算して
結果を経過時間として表示がベターでありセオリーかな。

描画更新用タイマーの間隔を1000ミリ秒にすると最初の理由で時々秒数が2秒飛んで表示されたりするはずだから、
気になるなら描画更新イベントを呼ぶ間隔を100ミリ秒なりfpsが許すまで気にならないレベルに落とせば良いと思う。

172:Now_loading...774KB
07/08/31 23:08:28 agiUkJyo
FlashMX2004です。クラスの利用についての質問です。

クラスを管理しやすくするために、FLAファイルと同階層に
MCControlフォルダと、Managementフォルダを作り、
MCControlフォルダにCursor.as、Managementフォルダに
Condition.asを配置しました。

ここで、Cursor.asで、Conditionを使おうとして

class Cursor {
var condition:Condition;
}

とすると、「クラス'Condition'がロードされませんでした」というエラーが出ます。
importしようとして、

import Management.*;
class Cursor {
var condition:Condition;
}

としても、解決できませんでした。
どうすれば、別フォルダにあるクラスを利用することができるのでしょうか?

173:Now_loading...774KB
07/09/01 02:37:23 fOe1T35u
FLASH5使ってます
ムービークリップのアクションに記述した変数の中身を
別のフレームのムービークリップやフレームのアクションから
読み込みたいのですが、可能ですか

174:Now_loading...774KB
07/09/01 07:00:10 8k8KBU5/
>>172

パブリッシュ設定画面でActionScriptのバージョンリストの横にある設定、
そこでクラスフォルダを指定できる場所があると思うからそこに
MCControlとManagementフォルダパスを指定すればいける、かも。


175:Now_loading...774KB
07/09/01 11:10:06 lM5AHOi+
>>172
パッケージとして使うなら class MCControl.Cursor {

176:Now_loading...774KB
07/09/01 12:30:56 +bO+o6yA
>>173
パスを使う。例えば、MC名がxxxで変数がyyyなら、
絶対パスでは、_root.xxx.yyy

177:172
07/09/01 12:48:19 or8PVano
ご解答ありがとうございます。

>174
相対パス指定、絶対パス指定の両方をためしたのですが、状況は
変わりませんでした。

>175
class MCControl.Cursor {
var condition:Condition;
}
としてみたのですが、状況は変わりませんでした。
また、念のため

class MCControl.Cursor {
var condition:Management.Condition;
}
および、Condition.asを
class Management.Condition{
//処理
}
として試してみたのですが、同様に状況は変わりませんでした。

なお、エラーは「シンタックスチェック」ボタンを押したさいに出ます。
FLA精製時には、エラーメッセージは出ません。
※クラスファイルで別クラス読み込むさい、「../」といった方法あればいいのですが……

178:Now_loading...774KB
07/09/01 12:57:01 5nF/Lifr
>>177
環境設定のクラスパスに追加汁

179:172
07/09/01 13:17:41 or8PVano
ご回答ありがとうございます。

>178
「環境設定」から、MCControlとManagementのパスを追加したところ

class MCControl.Cursor {
var condition:Management.Condition;
}

だと状況に変化はなかったのですが、試しに

class MCControl.Cursor {
var condition:Condition;
}

としたところ、「コンパイルされたクラス'Management.Condition'が
読み込まれたクラス'Condition'に一致しませんでした」という、別の
エラーが帰ってきました。
(「クラスをコンパイル」した覚えはないのですが……)

なお、Condition.asは前回と同様
class Management.Condition{
//処理
}
です。

180:Now_loading...774KB
07/09/01 13:36:28 lM5AHOi+
クラスパス追加するからエラーがでるんだろ。
追加するのはクラスのルートディレクトリだけな。でコンパイルするときはASO
削除してから。

181:Now_loading...774KB
07/09/01 13:47:57 +bO+o6yA
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)

SharedObjectのディレクトリについて質問です。

localSO = SharedObject.getLocal(saveName1, "/"); と localSO.flush();
で、saveName1という名前でHDDのlocalhost内にデータを保存させることは
出来ました。
次にlocalhostの下に、ASで任意の名前のディレクトリ(例えばFolder1)を作って
保存したいのですが、これは可能でしょうか?

solファイルが増えることを想定して、ディレクトリ名で管理したいと思っています。

182:172
07/09/01 14:05:18 or8PVano
ご解答ありがとうございます。

>180
ルートディレクトリを「フルパスで」設定したところ、エラーが出ずに
無事表示されました。ありがとうございました。

ただ、一つ疑問なのですが、環境設定ではすでに
クラスパスとして「.」が登録されていました。
これは、FLAファイルがおかれているディレクトリを指すのだと
思うのですが、なぜ改めてフルパスで指定しなければ
うまく動かなかったのでしょうか?

※今後、複数のFLAファイルを作っていく際に、「そのFLAのある
 ディレクトリがクラスのルート」という指定ができてくれれば
 編集のたびにいちいち環境設定を変更しなくても良くなるのですが……。

183:Now_loading...774KB
07/09/01 14:44:20 /szJRb7p
>>182
ファイルからの相対パスじゃなくて
実行プログラムからの相対パスだからじゃね?
よく知らんけど

184:172
07/09/01 15:09:44 or8PVano
ご回答ありがとうございます。

>183
私は実行ファイルを「appli」フォルダに入れていたので、そこからの
相対パス「..\」をクラスパスに設定したところ、問題なく動作いたしました。
ありがとうございました。

>172からの質問は、これにて終了いたします。
皆様、本当にありがとうございました。

185:158
07/09/01 15:20:03 e1mE+muK
>>181
ディレクトリ操作は無理じゃないかと。
FLASHから勝手にフォルダ作られちゃ困るでしょ

186:Now_loading...774KB
07/09/01 19:10:34 5nF/Lifr
>>181
第2引数で指定すりゃいんじゃねーの

187:Now_loading...774KB
07/09/01 19:53:32 or8PVano
FlashMX2004 Professionalです。
私は>172ですが、別件の質問をさせていただきます。

アニメーションするマウスカーソルを作ろうとしているのですが、
このアニメーションを、複数の外部JPEGを読み込むことで
実現しようと考えています。(いわゆるパラパラ漫画のようにする)

ぱっと思いつくのは、setIntervalを使って、短い時間に次々と
MovieClipLoader.loadClip()でJPEGファイルをロードする方法ですが、
アニメパターンごとにloadClipするのは明らかにまずいように思いますw

あらかじめ画像全体をメモリに読み込んでから、表示時jにメモリへ
アクセスするとか、そう言った「外部ファイルのアニメ表示」のアイデアには
どういうものがあるのでしょうか?

188:Now_loading...774KB
07/09/01 19:58:31 0t02gU5O
>>181>>186
"/"で指定できるのはswfのurlに含まれるディレクトリ
C:\Documents and Settings\hoge\test.swf
の場合
"/Documents and Settings"でlocalhost内にDocuments and Settingsと言うフォルダが出来る。
(webでも大体同じ)
残念ながら任意の名前は指定できない。


189:Now_loading...774KB
07/09/01 20:06:21 5nF/Lifr
/以下の任意のディレクトリ構成は可能じゃなかったっけ?

190:181
07/09/01 20:16:42 /2GjwLFq
>>185,186
ありがとうございます。第2引数では駄目でした。
やはり、ディレクトリはlocalhost固定のようです。

191:181&190
07/09/01 20:20:26 /2GjwLFq
>>181-189
すいません。このスレをリロードせずに書き込んでいました。
一応、下に1個は作成できるということですか?

192:Now_loading...774KB
07/09/01 20:37:41 5nF/Lifr
>>191
ああ、第2じゃなかった
第1引数の方で"savedir/savedata"とかでやってみてちょ

193:181&190
07/09/01 21:47:09 /2GjwLFq
>>192
有り難うございます。
path1 = "subhost/";
localSO = SharedObject.getLocal(path1+saveName1, "/");
とすると、#subhostフォルダ(シャープが付く)が作成され、その中に
saveName1.solが保存されました。

なお、第2引数 "/"が無い場合は、path1で指定した名前に関わらず
Flashで勝手に ##EE6383F9C6・・・・ などというフォルダが作られ、
その中に00000001.solというものが出来ます。 よって第2引数も
必須のようです。

194:Now_loading...774KB
07/09/01 22:47:04 /9LeuBUy
>>187
試してないから出来ないかもしれないけど

       1 2 3 4
レイヤー1:mc1
レイヤー2:  mc2
レイヤー3:    mc3

ってMC置いといて
4フレーム目でそれぞれのMCに画像読み込んで
1~3フレームをループすればできそう。

195:188
07/09/01 23:14:26 0t02gU5O
>>192
おお、気が付かなかった、勉強になった。

196:Now_loading...774KB
07/09/01 23:28:54 GOhTES9R
>>187
それ、一枚ごとに読み込まなきゃいけないの?
アニメにするつもりなら、swfとかflvみたいなひとかたまりにしておいた方がよくないか?

197:Now_loading...774KB
07/09/01 23:46:13 Apz3GuwA
標準カーソル隠してカーソルの位置にアニメーションするMC、だけで済むだろうに・・
まさかFlexで作ってるとかじゃあるまい?

198:187
07/09/02 00:03:21 JKrAf2BC
ご回答ありがとうございます。

>194
ありがとうございます。あらかじめ複数配置しておくのは盲点でした。
ただ、loadClipするときは、そのフレームで対象となるmcが配置されて
いる必要があるので、下のレイヤーを前のフレームに配置し
後のフレームを上に重ねるようにすればできそうです。
(この場合、複数のmcがカーソルの中で重なっているので
 のちの仕様変更(透過PNGを使うなど)の歳にもう一度考えないと
 いけないとは思いますが、当分はこの手でしのげそうです)

>196>197
発注元からの指示が「Flashがなくても絵柄を変更できるように
PhotoShopで扱える画像で頼む」とのことでしたので、こんな方法を
取っています。Flash8以降ならPNGを使えれば透過もできて最高なのですが
開発環境がMX2004なので、やむなくJPEGで納得してもらっています(´・ω・`)

199:Now_loading...774KB
07/09/02 04:28:56 o3hqjAWm
プロジェクターについて質問なのですが、
例えばウィンドウのクローズを押された時に『終了しますか?』というようなダイアログを出したいのですが
FLASH側でクロ-ズを取得するコマンドってありますか?

200:Now_loading...774KB
07/09/04 16:40:25 y0mjhuPr
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)

SharedObjectの新規ディレクトリ(フォルダ)について

path1 = "subhost/";
localSO = SharedObject.getLocal(path1+saveName1, "/");
とすると、#subhostフォルダ(シャープが付く)が作成され、その中に
saveName1.solが保存されました。

ここで作成とは反対に、作成ディレクトリ(フォルダ)の削除と名前の変更を
試みていますが、両方出来ません。
削除・変更は、(セキュリティ上)OSの機能を使わないとやはり駄目なのでしょうか?

なお、新規ディレクトリ内のsolファイルの削除は、saveName1を定義して 
localSO.clear(subhost); でOKでした。

201:Now_loading...774KB
07/09/04 20:32:37 5sDI9kzh
無理じゃないの?
てかそれ目的はなに?

202:Now_loading...774KB
07/09/04 20:47:43 5sDI9kzh
ちなみにプレーヤーの設定画面でローカル記憶領域を0にすれば
該当ドメインのsolをフォルダごと消せるけど
それではだめなの?


203:Now_loading...774KB
07/09/04 21:16:53 yJHGSOK3
質問なんですが、
とある本に、あるMCがマウスカーソルの動きに
遅れてついてくるスクリプトが書いてあり、
マウスカーソルの位置でピタリと止まるには

onClipEvent ( EnterFrame ) {
if ( _x < int ( _root._xmouse/10)*10) {
_x+=10;
} else if ( _x > int ( _root._xmouse/10)*10 {
_x-=10;
}
if ( _y < int ( _root._ymouse/10)*10) {
_y+=10;
} else if ( _y > int ( _root._ymouse/10)*10 {
_y-=10;
}
}

と、目標地点を移動量刻みに分割しろと書いてあったのですが、
同じようじ書いてもMCがカーソルのところで止まってくれません、
どこがいけないんでしょうか?

204:Now_loading...774KB
07/09/05 00:25:26 E+VHtrAA
サウンドプレーヤー作成にて質問です。

目的はループ再生(もしくは“100回”など)なんですが、一時停止後

//再生再開
on(release){
Sound1.start(Sound1.position/1000, 0)
}

と、ボタンアクションに記述すると、一時停止したその曲で終わってしまいます。
この記述のどこに変更、もしくは足せばループ再生的な事ができますか?
ループの回数は30回もあれば十分なので。よろしくおねがいします。

205:Now_loading...774KB
07/09/05 00:46:02 n30z77if
>>203
MCの移動量が10刻み、1にしたら多少マシになるかも

>>204
onSoundComplete = function(){ Sound1.start();}

206:Now_loading...774KB
07/09/05 01:00:45 STXMbf8o
>>203
MCの位置とマウスの位置が10(移動量)以内なら、
MCの位置にマウスの位置を代入するようにする。

207:Now_loading...774KB
07/09/05 01:01:52 Lv8sVb/D
眠くて頭が回んないので、気づいたとこだけ答えると、

>203
int()はMath.int()のまちがいじゃまいか。
あと、そのスクリプトは構文エラーなので、括弧の閉じ方とか
予約語などをもう一度見直した方がいい。
なお、そのスクリプトでどういう動きをしたいのかが分からないが、
「遅れてついてくるMC」なら、俺はこうする

onClipEvent ( enterFrame ) {
_x -= (_x - _root._xmouse) / 10;
_y -= (_y - _root._ymouse) / 10;
}

>204
ボタンアクションにそーゆーことを記述するのはめんどいのでオススメしない。
(つーか「クリップアクション」自体、なるべく避けた方がいいと思う。迷子になりやすいし)
とりあえず、そのスクリプトの「Sound1」を_rootから始まる場所に書き換えてみよう。
そのままだと、ボタンが置かれたMCで定義したSound1に対して
あれこれ仕様という意味になるから、もっと上で定義していたら、とうぜん空振りする。

208:200
07/09/05 01:08:38 l+jAGjWi
>>201
目的は、GUIとまでは行きませんが、solファイルを含むフォルダ操作です。
フォルダの作成に加えて変更・削除が出来れば、かなり自由度が増えると思いました。


>>202 ローカル記憶領域を0
試してみます。

209:Now_loading...774KB
07/09/05 01:20:11 /9kyThfX
>>208
Flashでフォルダ操作やファイル操作は出来ません。

210:Now_loading...774KB
07/09/05 01:39:27 Lv8sVb/D
>208
localSO.data.rootfolder.savedata1=保存内容
とかじゃだめ?
これならdataプロパティ以下の要素を、色々いじれるが。

ファイルを直接作ったり消したりしたいなら、あきらめたほうがいいかも。

211:200
07/09/05 02:25:57 l+jAGjWi
>>209-210
複数のフォルダ内の複数のsolファイルに色々な項目(例:身長,体重,年齢など)を
詰め込みたいので出来れば、フォルダ単位で消去・変更したいです。

なお、「ローカル記憶領域を0」は、まだ試していません。

212:Now_loading...774KB
07/09/05 02:48:47 Lv8sVb/D
>211
var root = new Object();
root = SharedObject.getLocal("root", "/");
saveData1 = SharedObject.getLocal("root/saveData1", "/");
root.data._content = "これはカレントのデータだお";
saveData1.data._content = [{height:"209cm", weight:"135kg", name:"G.馬場"},
{height:"191cm", weight:"102kg", name:"A.猪木"}];
delete saveData1.data._content;

末尾の delete saveData1.data._content; を付けたり外したりするなどして、
*solファイルの有り無し検索してみよう。
自分で実験するヒマを惜しんではいけない。

213:Now_loading...774KB
07/09/05 02:50:53 Lv8sVb/D
申し訳ない、>212の1行目var root = new Object(); は不要です。
・・・ダメだ、頭が働かないのでもう寝る。

214:200
07/09/05 03:30:38 l+jAGjWi
>>212-213
てんきゅう

215:202
07/09/05 04:11:35 oq2Wn5BF
>>200
「ローカル記憶領域を0」は無視でいいよ
話が良くわかってなかった。
フラッシュからASでやれることじゃないし。

216:Now_loading...774KB
07/09/05 14:11:01 ps3RHVx4
外部テキストを読み込むクラスなんですけどテキストが返ってこないんです。
どうすればテキストの内容を返すことができるのでしょうか。

public class Textload extends Array {
var loader:URLLoader;
var datB:Array = new Array();
public function Textload() {
}
public function textloading():Array {
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("test.txt"));
}
public function completeHandler(evt:Event):Array {
var datA:Array = loader.data.split("\r");
for(var i:Number=0; i<datA.length; i++){
datB[i] = new Array();
datB[i] = datA[i].split(",");
}
return datB;
}

var playerdata:Array = new Textload();
trace(playerdata.textloading());

217:Now_loading...774KB
07/09/05 14:18:34 8MQmnQEW
待ってないから

218:Now_loading...774KB
07/09/05 15:33:36 be+ocy7a
>>216
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

219:203
07/09/05 22:41:07 v6ZxKUeG
ご回答ありがとうございました

>>207
Math.int() にしたらエラーが出ましたが、

onClipEvent ( enterFrame ) {
_x -= (_x - _root._xmouse) / 10;
_y -= (_y - _root._ymouse) / 10;
}

の方法で解決しました。
なぜ、うまくいくのか
じっくり考えたいと思います。


220:Now_loading...774KB
07/09/05 23:06:49 bqmYmjyS
paraflaでFLASHを作っています。
左クリックでのボタン処理ができるように、
右クリックを押すことでアクションをしたいのですが、
どうすれば出来るでしょう?

221:Now_loading...774KB
07/09/05 23:13:09 Oadww5zB
コントロールパネルで左利き用マウスに設定すればいいよ

222:Now_loading...774KB
07/09/06 01:00:17 M+Pv+M6l
>219
自分自身の座標と、目標の座標の10分の1づつ接近していく。
近づけば近づくほど、「10分の1」の値は小さくなる=近づき方が遅くなる
ただし近づいてはいるので、いずれある時点でその差は1を下回る=目標値点で止まる

ただ、止まっているときでも常にカーソルへの移動を試みているので
無駄を省きたいので有れば「マウスカーソル移動でMC移動開始」と
「移動距離が1を切ったらonEnterFrameをやめる」を
実装してもいい(必要ないと思うならしなくてもいいが)。

>220
Macのことを考えてみよう。
(じつは、右クリックはコンテクストメニューなら割り付けられる。方法は勉強してちょうだい)

223:Now_loading...774KB
07/09/06 02:08:02 9lIbtxB2
>>220,222
AS3.0限定かもしれないけど右クリックのアクションも可能だと思うよ。
前に見た解説サイト見つけられないけど・・・

paraflaでもできないわけじゃないかも。

224:Now_loading...774KB
07/09/06 05:53:23 ARIbZD1C
>>216
きちんとヘルプを読めばサンプル載ってるし、そんな書き方しないと思う。
適当に書いて動きませんなんとかして、はひどすぎ。

225:Now_loading...774KB
07/09/06 10:56:05 IA+i6VgC
>>224
いや、適当というつもりはなかったです。
return datB;のところでtrace(datB)するとテキスト取得の確認ができたので、
関数に型名つけてreturnで返そうと思いました。
public function completeHandler(evt:Event):Array {...}
だけだとundefinedとでたので、public function textloading() {...}のほうにも
型名つけないとまずいのかと思ったのですが、そうするとエラーが出てしまい、
どうすればよいのか解らなくなり質問しました。

226:Now_loading...774KB
07/09/06 11:03:19 ARIbZD1C
>>225
ん、まず、なんでArrayから派生させてるのかがわからん
ハンドラのreturnって何が受け取るの?

227:Now_loading...774KB
07/09/06 12:57:09 IA+i6VgC
>>226
swfのタイムラインに以下を記述してtrace結果でテキストの内容を出そうとしました。
var playerdata:Array = new Textload();
trace(playerdata.textloading());



228:Now_loading...774KB
07/09/06 13:09:51 ARIbZD1C
>>227
答えがそれかよw。Classを使ってどうこなら
まず、Javaなりの入門書を一冊やって、OOPを勉強してからだな。

229:Now_loading...774KB
07/09/06 16:14:27 DwFYQP3i
バイナリデータを埋め込んで動的に読み込みたいんですが、
↓のように定義して
[Embed(source='data/stage1.dat', mimeType="application/octet-stream")]
private var GameData1:Class;

↓のようにクラスへの参照を取得しようとすると
var classRef: Class = getDefinitionByName("GameData1") as Class;

↓のようなエラーが表示されてしまいます。
ReferenceError: Error #1065: 変数 GameData1 は定義されていません。


Embedで埋め込んだクラスにはgetDefinitionByName()できないのでしょうか?
どうにかクラス名を動的に指定して読み込む方法はないでしょうか。
環境はWinXP/Flex2 SDK/Flash9 r28です。

230:Now_loading...774KB
07/09/06 16:18:27 eVJwwHFF
そんなもんクラスじゃねーだろ
好きに読み込め

231:Now_loading...774KB
07/09/06 16:20:16 eVJwwHFF
なんだか頭の不自由な奴が自分ルールでクラスだのなんだのを勝手に
定義してわけわからん質問してるのが多いな。同じ奴か?
基本的な本1冊読めよ。馬鹿すぎる。

232:229
07/09/06 16:47:32 DwFYQP3i
すみません。
普通のアセットクラスだと思うのですが、どの辺りが間違っているのでしょうか。

233:Now_loading...774KB
07/09/06 16:59:08 ARIbZD1C
>>232
Flexでの書き方はしらんが、知ってる人でもその質問では答えられんと思う。
何をやりたいのかを書いて、具体的なソースを提示しないとわからんよ。

234:Now_loading...774KB
07/09/06 17:04:44 ARIbZD1C
だいたい
>バイナリデータを埋め込んで動的に読み込みたいんですが、
埋め込んで動的にって。。。どういうことだよw

235:229
07/09/06 17:36:43 DwFYQP3i
質問が下手ですみません。
ゲームのステージデータを埋め込んで、各ステージの初期化時に
読み込みたいのです。

public class Sample01 extends Sprite {

[Embed(source='data/stage1.dat', mimeType="application/octet-stream")]
private var GameData1:Class;
[Embed(source='data/stage2.dat', mimeType="application/octet-stream")]
private var GameData2:Class;
...

}

といったようにSWFファイル内にバイナリデータのアセットとして埋め込んでおいて、
以下のようなステージデータのロードメソッドを呼ぶつもりでした。
動的にというのは、ステージ番号を指定してgetDefinitionByName()に渡す文字列を
変えたいという意味で使いました。

private function loadStageData(stage: int) {
    var classRef: Class = getDefinitionByName("GameData"+ stage) as Class;
    var GameData: ByteArray = new (classRef());
}

埋め込んだデータがJPEG画像などでも同様でした。
別の方法でも構わないのですが、同様のことを実現するにはどういったやり方が
あるでしょうか。宜しくお願いします。

236:Now_loading...774KB
07/09/06 17:44:14 ZRyepadd
だからそれのどこがクラスだよ
今のあんたに何説明しても無駄

237:229
07/09/06 18:08:28 DwFYQP3i

>>236
クラスについては認識が間違っているということで、再度勉強させていただきます。
ステージデータについては、当初以下のような記述で動作していたのですが、
クラス名の指定をgetDefinitionByName()に置き換えられないかと試行錯誤して
いるところでした。この違いについて、まだよく理解できていません。

private function loadStageData(stage: int): ByteArray {
    var data: ByteArray;
   
    switch (stage) {
        case 1:
            data = new ByteArray( new GameData1() );
            break;
       
        case 2:
            data = new ByteArray( new GameData2() );
            break;
        ...
    }
   
    return data;
}

ステージデータは100面分用意する予定なので列挙するのはできれば避けたいと
思っています。>>235にも書きましたが、私の書いたやり方がよりも良いやり方が
あれば、お教えいただけると幸いです。

238:229
07/09/06 18:12:32 DwFYQP3i
バイナリデータを読み込む部分ですが、popforgeというサウンドライブラリの
SoundFactory.classを参考にしました。Classと指定することについては、そう
いうものだと思って、あまり深く考えていませんでした。

239:Now_loading...774KB
07/09/06 18:17:06 ZRyepadd
埋め込む必要があるなら文句いわねーで列挙しろ
めんどくさかったらコードを書くマクロを作れ
実行時に読み込むだけで事が足りるならクラス化しねーでファイル読み込め

240:229
07/09/06 18:45:02 DwFYQP3i
列挙するのを避けたいというのは面倒だという理由ではなく(それこそマクロ等で
処理すれば良いので)、保守性や可読性の観点から現実的ではないと判断しました。
そこで調べた結果行き着いたのがgetDefinitionByName()でしたが、意図した通りに
動作させることはできませんでした。

そもそもgetDefinitionByName()はこのような用途には使えないのか、使い方が悪いのか。
他のやり方があるのか、あるいは列挙以外に方法はないのか…というのが、私の知りたい
ことです。宜しくお願いします。

# 外部ファイルから読み込む案もご提示いただきましたが、今回はデータを埋め込む場合で
# お願いいたします。


241:Now_loading...774KB
07/09/06 18:50:49 ZRyepadd
使い方というより頭が悪いな

242:229
07/09/06 18:59:27 DwFYQP3i
正直、頭は悪いほうなので、独力では解決できずに助言を求めている次第です…。
内容の無い、悪意の回答はご遠慮いただけると幸いです。

243:Now_loading...774KB
07/09/06 19:38:29 wXAs/28X
var classRef:* = new getDefinitionByName("GameData"+ stage)()

var GameData: *= new (classRef)()
じゃね?知らんけど

244:229
07/09/06 20:02:42 DwFYQP3i
>>243
ありがとうございます。
早速試してみましたが、「getDefinitionByName()をコンストラクタとして
呼び出すことはできません」とのエラーが出てしまいました。
型宣言を「*」にする部分を参考にさせていただいて以下のようなコードも
試してみましたが、>>229同様の定義されていないエラーとなってしまいました。

var classRef:* = getDefinitionByName("Sound1");
var GameData:* = new (classRef)();

245:Now_loading...774KB
07/09/06 20:18:08 wXAs/28X
間違えた
var classRef:* = new (getDefinitionByName("GameData"+ stage))()



246:229
07/09/06 20:26:33 DwFYQP3i
>>245
ありがとうございます。
やはり、定義されていないエラーになってしまいます。
getDefinitionByName()に渡している文字列が悪いのかもしれませんが、
traceを見ても「GameData1」になっているので、間違ってはいないと
思うのです。。。

すみません。
>>244では「Sound1」になっていますが、効果音読むところをコピーして
しまいました。正しくは「"GameData"+ stage」と書いてあります。

247:Now_loading...774KB
07/09/06 22:05:25 Ggf2GCKz
>>246
var classRef: Class = getDefinitionByName("GameData1") as Class;
var gameData: GameData1 = new classRef();
これでどう?
GameData1がパッケージ内にあるなら、パッケージ名も書かなきゃだめだよ。

248:229
07/09/06 22:24:58 DwFYQP3i
>>247
ありがとうございます。
コンパイル時に以下のようなエラーとなってしまいました。

型が見つからないか、コンパイル時定数ではありません : GameData1。
var GameData:GameData1 = new classRef();
             ^

GameData1は現在Sample01というクラスの内部でEmbedしている箇所で宣言しています。
パッケージ名は親(?)のSample01には特に指定していないので、GameData1にも付かない
のだと思っています。こういう場合のパッケージ名がどうなるのかは、よく分かって
いません。ソースは以下のような感じです。
---
package {
    import flash.display.*;
    ...
   
    public class Sample01 extends Sprite {
        [Embed(source='data/stage1.dat', mimeType="application/octet-stream")]
        private var GameData1:Class;
        [Embed(source='data/stage2.dat', mimeType="application/octet-stream")]
        private var GameData2:Class;
        ...
       
    }
}
---

249:Now_loading...774KB
07/09/06 22:57:16 IvtJX8zy

っ getDefinitionByName("Sample01_GameData1") as Class;

250:Now_loading...774KB
07/09/06 23:20:52 IvtJX8zy

っ var GameData:* = new (getDefinitionByName("Sample01_GameData1") as Class);

251:229
07/09/06 23:31:26 DwFYQP3i
>>249
うああ、できました!ありがとうございますっ…!
クラスの中のクラス(どう呼ぶのか分かりません)名は、そのように
記述するのですね。勉強になりました。

>>249さん、答えていただいた皆様、本当にありがとうございました。

252:216
07/09/07 10:21:44 /y5tc2Xf
>>228
public class Tashizan {
public function Tashizan() {
}
public function sum(numA:Number,numB:Number):Number {
return numA+numB;
}
}

var goukei:Object = new Tashizan();
trace(goukei.sum(15,3));
//18

のようにreturnで返したかったんですがなにが問題なのでしょうか?
問題点だけでも教えていただけませんか。

253:Now_loading...774KB
07/09/07 14:46:11 QESz89NL
>>216
関数の外にreturn置いてるのとか継承と型指定を取り違えてる風な書き方
3個以上間違いがあると誰も答えてくれないだろうから質問するときは問題点を
絞り込むように単純化した方がいいよ。




254:Now_loading...774KB
07/09/07 17:27:19 G6/Ml+Up
>>252
Arrayから派生してるのは何故?
returnは何が受け取るの?
レスしても、ちゃんと答えない質問者にはレスする気にならん。

255:Now_loading...774KB
07/09/08 22:27:58 rf8QzVNl
WinXP-ProでFlash8-Pro(Ver8.0)を使っています。

lineStyle()で線を点線(あるいは破線)にすることは可能でしょうか?
一応ヘルプを見ましたが、分かりませんでした。

256:Now_loading...774KB
07/09/08 23:10:39 gH/pK9oI
破線はなかったはず。てか、Google。
URLリンク(www.gac.jp)


257:Now_loading...774KB
07/09/09 01:52:20 46xyRfSe
環境はWin, CS3, AS3です。

これまでは_urlでswfの置かれているパスを取得できたと思うんですが、
AS3の場合はどうすればいいでしょうか。

よろしくお願いしますm(_ _)m

258:Now_loading...774KB
07/09/09 02:38:29 lVJTecGh
>>257
_url → flash.display.Loader.contentLoaderInfo
AS2と比べると使い方はちょっと面倒かもな。

AS3ではどうするの?という質問はまず↓を見てみよう。
URLリンク(livedocs.adobe.com)

259:Now_loading...774KB
07/09/09 04:21:40 oX5rL85l
>>257
trace(loaderInfo.loaderURL);

260:255
07/09/09 04:54:02 DAvWqwjE
>>256
有り難うございます。
なるほど、細かい点(線分)の集合ですね。


あー、お腹の調子がおかしい・・・ ←独り言

261:Now_loading...774KB
07/09/09 14:28:39 AciRr+jo
Javaをちょこっとかじってて、ActioScript初めてなんですけど、

flaファイル上のMovieClipにASファイルのクラスを適用することって出来るんでしょうか?出来れば軽くサンプルを書いてもらえるとありがたいんですが…

ASで定義したクラスのメソッドでMovieClipの操作を行ってみたいんですが・・・

262:Now_loading...774KB
07/09/09 14:35:15 oX5rL85l
>>261
できる

263:Now_loading...774KB
07/09/09 19:15:13 QumQM+cK
初歩的な質問ですみません。
LoadVariables()で読み込んだファイル名のMP3を再生させようとするのですが、
loadSound()でエラーが出てしまいMP3が読み込めません。

loadVariables("soundplay.txt", _root);
my_snd01 = new Sound(this);
my_snd02 = new Sound(this);
my_snd01.loadSound(_root.sound01, false);
my_snd02.loadSound(_root.sound02, false);

soundplay.txtの中身:
sound01=sound01.mp3&sound02=sound02.mp3

何故かloadSound()をコメントアウトすると変数がちゃんと拾えているようですが、
loadSound()があるとundefinedが出て読み込みエラーが出るようです。
これは何故でしょうか…詳しい方お願いします。

264:257
07/09/09 20:12:11 46xyRfSe
>>258-259

ディモールトグラッツェ!!!!
ありがとうございました、助かりました。

265:Now_loading...774KB
07/09/09 20:55:39 itq/IsYb
>261
俺も最初は苦労したくちなので、丁寧におしえちゃうぜ。
でもな、バージョン名くらいは書いて下さい。頼むから。

ライブラリウィンドウで、ムービークリップの
リンケージ名称設定をしてから・・・

MXの場合:
function クラス名(){プロパティを列挙}
クラス名.prototype=new MovieClip();
クラス名.prototype.メソッド名=function{処理}
クラス名.prototype.メソッド名=function{処理}
          :
Object.registerClass(リンケージ名,クラス名);

MX2004の場合:
ムービークリップのリンケージ名の下に
AS2クラスの項目があるので
そこにクラス名を記入。
※ちゃんとクラスはMovieClipをextendsしてるよね?

266:Now_loading...774KB
07/09/09 23:46:14 AciRr+jo
>>265
すいません、遅くなりました
Flash8 (AS2.0?)です

------
class Hoge extends Movieclip {
private var mc:MovieClip;

function hoge(target_mc:Movieclip){
mc = target_mc;
}


てかんじにして、flaファイル側に
hoge = new Hoge(リンケージ名);
hoge.hghg();
という感じでやってたんですが、反応が無いみたいです;

265の方法を試してみます。

267:Now_loading...774KB
07/09/09 23:54:50 BVXAhwVo
>266
var hoge:Hoge=new Hoge(引数(インスタンス名とかな));
インスタンス名.onPress=function(){
hoge.ghgh();
}
既述通り、リンケージが楽

つーか、基本はggrば?

268:Now_loading...774KB
07/09/09 23:58:35 itq/IsYb
>266
俺は>265だが、8かー。MX2004使いだから的はずれかもしれんが
一応>266で気になったことは、

「MovieClipはattachで生成するのであって、newで生成しない」
(ただしFlexはnewで生成するが……)

という、基本ルールを知っているかどうか。

269:Now_loading...774KB
07/09/10 00:04:53 IlxYGmqe
>268だけだと意地悪なので、いちおうコードも載せておくよ。

_root.attachMovieClip("リンケージ名", "MC名",深度, {プロパティ名:値});

この「リンケージ名」に、さっき定義したリンケージ名をいれればOK。
ちなみに俺が良くやる方法は、

for (i=0; i<個数; i++){
MC[i]=_root.attachMovieClip("リンケージ名", "MC名"+i,i);
}

と、イコールつなぐことで、「参照」を取得できる。こうすると、いちいちパスを書かなくても
MC[2]._alpha=50; なんてことができて、スゲーらくちんw

270:Now_loading...774KB
07/09/11 12:54:39 Ln/IIDsc
デザイナー初心者です。
フラッシュ制作で、キューブが回転して奥から転がってくるものを依頼されました。
回転するものはあっても転がってくる様なものは探しても見つかりませんでした。
その様なサイトかスクリプトがあれば教えて下さい。
よろしくお願いします。

271:Now_loading...774KB
07/09/11 13:01:55 UA9VZCW1
>270
誘導
スレリンク(swf板)

272:Now_loading...774KB
07/09/11 13:35:00 Ln/IIDsc
>>271
有難うございます
そちらに行ってみます(`・ω・´)

273:Now_loading...774KB
07/09/11 16:27:25 ZKuw48zy
質問です。環境はWinn2000・Mx2004です。

式の書かれた外部テキストファイルを読み込ませ、
それを解釈させて、結果をtrueかfalseで得ようとしています。
例えば、他の処理系風に書けば:

res=eval("(a==1)&&((b<250)||(name=\"Dave\"))");
trace("resu;t: "+ res);

で、trueまたはfalseを返したいのですが、ActionScriptのevalでは
そう言うことができません。
次善の策として、JSONを使い:

[
{ "left" : "a", fugou : "==", "right":1}, {……}, {……}
]

などと言うことも考えたのですが、どのように処理していいのかが
まるで思いつきません。
どのようにするのがよいでしょうか?

274:Now_loading...774KB
07/09/11 20:31:38 yONnbTi8
>>273
javascriptでできるならASから呼んでやればいいんじゃない?

275:Now_loading...774KB
07/09/11 21:44:44 4GLdl+a5
>>273
言ってることがいまいちよくわからんが、
>式の書かれた外部テキストファイルを読み込ませ
の部分はASで実装できてるの?


276:273
07/09/11 21:57:50 ZKuw48zy
>274
できればswf内で完結させたいと思っています。

>275
はい。文字列を読み込ませ、それをtraceでそのまま表示させることは
できています。
>273のスクリプトを正確に書き直すと、

condition.txtの内容:
(a==1)&&((b<250)||(name==\"Dave\"))

flaファイルのスクリプト:
lv=new LoadVars()
lv.onData=function(string){
res=eval(string); //この行はあくまでも例示です
trace("result: "+ res);
};
lv.load("condition.txt");

です。

277:Now_loading...774KB
07/09/11 22:51:35 b9HnqLsx
javascriptに投げてevalで計算した結果をexternalinterfaceで貰えばいいんじゃ?

278:Now_loading...774KB
07/09/11 23:28:26 x8I9fL8z
>>273
逆ポーランド記法にできれば結構楽よ

// 変数は自分で管理
var MyVariables = {a: 1, b: 100, name: "foo"};
// 変数と数値と文字列の区別は適当に目印つける
var MyCondition = ["V:a", "N:1", "==", "V:b", "N:250", "<", "V:name", "S:Dave", "==", "||", "&&"];

var _stack = new Array();
for(i=0;i<MyCondition.length;i++){
  var t = MyCondition[i];
  switch(t){
  case "==": var wk = _stack.pop() == _stack.pop(); _stack.push(wk); break;
  case "&&": var wk = _stack.pop() && _stack.pop(); _stack.push(wk); break;
  case "||": var wk = _stack.pop() || _stack.pop(); _stack.push(wk); break;
  case "<": var wk = _stack.pop() > _stack.pop(); _stack.push(wk); break;
  default: // 演算子以外は項である
    var type = substring(t, 1, 2);
    var term = substring(t, 3, t.length-2);
    switch(type){
    case "S:": _stack.push(term); break;
    case "N:":_stack.push(parseInt(term)); break;
    case "V:":_stack.push(MyVariables[term]); break;
    }
    break;
  }
  trace("「"+t+"」を処理した後のスタックの状態");
  for(n=0; n<_stack.length;n++) trace("["+n+"] "+_stack[n]);
}
trace("result:" + _stack[0]); // 演算結果が[0]に残る


279:Now_loading...774KB
07/09/12 01:24:39 t0Nd0J4u
>>273
なんかそれ最近、どこぞの誰かのBlogで読んだような気が・・・。
これかな?
URLリンク(d.hatena.ne.jp)


280:273
07/09/12 12:14:04 g8zl/LOd
皆様、ありがとうございます。

>>277
調べたところ、それはFlash8の機能のようです。またいずれにしても
WEBブラウザの力は借りたくないと考えています。

>>278
逆ポーランド記法は初めて知りました。
ただ運用面を考えると、あまり馴染みがない記述方法になるので
カッコなどをつかう記述を、その処理に落とし込めればベストです。

>>279
試しにソースをコピーしてみると、エラーが出たのですが、
オブジェクト定義で、要素の部分に'*"といった文字列を与えているためと
思われます(Flash8ではこの書き方は許されているのでしょうか?)
ただ考え方はソースからなんとなく見いだせましたので、
これでカッコに対応していれば、MX2004風味に書き直せるかも知れません。

281:Now_loading...774KB
07/09/12 12:55:34 HtdHDwog
>>280
やりたいことを明確に言わないとよくわからん
ASでの数式パースのロジックを知りたいって事か?

282:273
07/09/12 23:48:17 g8zl/LOd
>>281
やりたいことは、
「FlashMX2004を使って、
 テキストファイルに記載された論理式を解釈して結果を得る。
 ただし、WEBブラウザなどは使わず、swf単体で行う」
です。
正直、そのために何をどうすればいいのかが全く分からなかったので
こういう書き方をしました。
(正直、ここまで大がかりなものとは思っていませんでした……)

皆様の解答を見ていて、数式(論理式)のパース(構文解析と言う意味で
いいでしょうか?)ができれば、上記の目的は達成できると分かりましたので、
その方法を教えていただけると有り難いです。
(別の方法がある!というのであれば、そちらでもけっこうです)

目下のところは、>>278で紹介されている方法が逆ポーランド記法でなく、
通常の論理式対応のものであればベストです。

283:Now_loading...774KB
07/09/13 01:59:06 beX3qIXs
なんで逆ポーランドなのか考えた方がいいんじゃまいか?

284:Now_loading...774KB
07/09/13 02:50:33 wqdou11I
>>282 WEBブラウザなどは使わず、swf単体で行う

スタンドアローンなら、Exeでパブリッシュという方法もある。
但し、1.5MB以上になる。
ちなみに、俺も同じような文章解析(出力データ解析)をやっているが、
対象の文章の内容と解析目標によってStirigクラスのメソッド&プロパティを
ひたすら使い分けることでしか解決は無いと思う。

まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。

285:Now_loading...774KB
07/09/13 02:52:46 wqdou11I
284だ。
Stirigクラス → Stringクラス

286:Now_loading...774KB
07/09/13 13:13:43 ZpQ1BVYO
下記のアクションをムービークリップで動かしました
テンキー1・3で(座標変化で)速度をリアルタイムで変化させたかったのですが、fpsが低い設定の場合キー入力しても再描画時にムービーの速度に変化がないことが
多々でした。(試しにfps1で試したところ再描画までに入力したキー分の加速が反映されていませんでした)

onClipEvent (load) {
x_move = -1;
kasoku =10;
function movetxt() {
if (Key.isDown(97) == true) {
x_move -= kasoku;
}
else if (Key.isDown(99) == true) {
x_move += kasoku;
}
else {

}
_x += x_move;
}
}
onClipEvent (enterFrame) {
movetxt();

}
試しにキー押しの回数を調べるASを配置してみたところ、そちらは再描画までに押した回数が反映されていました。
この時も速度のほうは再描画までに反応を受け付けない時間(偶然や読み込みラグなどではなく)もあり結果は反映されませんでした。
読みづらい文・説明で申し訳ありません。
速度のキー入力リアルタイム変化について良い方法などありましたらお願いします。

環境はMacromedia Flash Pro8
AS2・WindowsXP・IE6です

287:Now_loading...774KB
07/09/13 15:38:55 BG4RnXCc
>>286
要は左右方向の加速度を変化させたいということか?
movetxt();内で結果位置を指定するのではなくて、(外に出して)
onClipEvent (enterFrame)内で指定したら?


288:Now_loading...774KB
07/09/13 15:43:32 hmnUxqDU
人間の色んな動作のアニメーションを作成しているんですが転ぶアニメーション
の参考になるサイトとかないでしょうか?
例えば歩くアニメーションだったらこんな感じで
URLリンク(www.training.co.jp)

転ぶ以外にも人間の基本動作のアニメーションで参考になるものがあったら教えてください


289:Now_loading...774KB
07/09/13 15:46:24 HEunF0E/
>>288
マルチは氏んでください

290:Now_loading...774KB
07/09/13 16:18:07 BG4RnXCc
>>286
setInterval() を使い、fpsに関係なく描画させる場合には updateAfterEvent() もある。

291:Now_loading...774KB
07/09/13 16:39:47 cYxdeUwj
>286
単純に変数操作はon()でやればいいんじゃないの?

292:Now_loading...774KB
07/09/13 16:52:43 JtxDSMb2
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)

キーコードの認識で質問です。

2つのキー:BackSpaceとShiftを同時に押した時のアクションをキーリスナーで指定
したいのですが、上手く出来ません。
下は第一目標として、traceで "Back/Shift" を出力させるものですが何も出ません。

myKey = new Object();
myKey.onKeyDown = function() {
if (Key.getCode() == 8 && Key.getCode() == 16) {
trace("Back/Shift");
}
};
Key.addListener(myKey);

どうしたら良いでしょうか?

動作はプレビュー上で行い、『キーボードショートカットを無効』にチェックを入れて
います。なお、BackSpace,Shift各単独のキー動作はOKです。

293:286
07/09/13 17:02:05 ZpQ1BVYO
とても早い書き込みありがとうございます。
>>287さん
>加速度の変化
そうです。ただ、何故かわかりませんが1fpsで動作させ、1s内にテンキーで加速を2回押しても一回分しか受け付けていない。
という状況に困っていました。
実際のところ1fpsという低速で動かすことはないのですが、より正確な方が良いと思いまして。

enterFrameにて指定してみましたが低速だと同じ結果になってしまいました。
OnClipEvent(enterFrame)では難しいのですかね。
説明不足な点が多くてすいません。

>>290さん
描画のタイミングを上げ判定の隙間を減らすことが出来るんですね。
これなら限りなく処理が自然になりそうです。早速試してみようと思います。

お二方レス大変感謝です。

OnClipEvent(enterFrame)の判定の落とし穴の方も解決したら書き込みさせて頂きます。

294:Now_loading...774KB
07/09/13 17:47:45 X66+axMg
>>282
数式解析のプログラムは結構出回ってる。
swfだけで完結させたいというなら、そのコードをActionScriptにパースすりゃよい。

ただし、ものすごく面倒
ちなみにそういう処理は、昔の死に言語が活躍してる時代の処理。
斜め上な開発をしていることに気づき、設計を考え直した方がよい。

295:286
07/09/13 17:54:29 ZpQ1BVYO
>>290さん
すいません更新忘れて見落としていました。

クリップイベントにしなければ上記のようなことにならないんでしょうか。
ご指摘ありがとうございます。

296:Now_loading...774KB
07/09/13 18:09:50 tNNYUyG0
>>292
getCode() の値が8かつ16ってあんまりだろw

if (Key.isDown(8) && Key.isDown(16)) {
trace("Back/Shift");
}

297:292
07/09/13 18:23:52 JtxDSMb2
>>296
有り難うございます。
getCode()の値は1つなんですね。

298:Now_loading...774KB
07/09/13 18:45:14 3nDCCNF9
>>297
trace()すればわかることだし、ヘルプにも書いてあるよ。
戻り値は数値; 最後に押したキーのキーコードを表す整数。

299:273
07/09/14 02:28:42 IuUz1TI2
お返事が遅くなってしまいすみません。

>283
やはり「難しいから」なんですね。取り組んでみて実感しました。

>284-285
>まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。

こちら、>278のソースを参考に作ってみようと思います。
方針としては、文字列を先頭から1文字づつバッファーに貯めて行き:

・数字が出現したら、演算子か英文字(プロパティ)が出るまで連続して読み込み、
 そのバッファーを「項」の配列にスタック
・演算子が出たら、数字か英文字が出るまで連続して読み込み、そのバッファーを
 「演算子」の配列にスタック
・それ以外はプロパティ。演算子が出るまで連続して読み込み、そのバッファーを
 「項」の配列にスタック
・演算子の文字列に優先順位をつけ、その優先順位の高い演算子を
 挟んでいる項を演算し、後ろの項をスプライス(削除)し、この項とその次の項を……
 を繰り返して行全体を処理
・優先順位が0になるまで、着目優先順位を1づつ下げながら繰り返す
・項が1つになったとき、それが解

カッコの処理は、開きカッコがでたら、その後の開きカッコの個数を数え、同数の閉じカッコが出たら
バッファーの内容を引数にして再帰呼び出しするようにしてみます。

>294
最悪、上記のことで実現できなければ、JSONで
[ { "left" : "a", "fugou" : "==", "right" : "1", "renketsu" : "||"}, {式}, {式} …… ]
等の記述をするように、仕様を考えてみます。

300:Now_loading...774KB
07/09/14 10:01:05 j38Gt5NV
>>299
XMLでやった方が早いんじゃねーの?

301:286
07/09/14 15:42:25 RvW1gVaf
setInterval()で無事それらしく出来ました。ご指導感謝します。
ありがとうございました!

302:Now_loading...774KB
07/09/14 20:39:48 LYhDOI8p
回転させるには_rotationを使えばいいんですよね?
でも、回転するにあたって中心位置指定をするASはあるのでしょうか?
rootを回転させたいので・・・

303:Now_loading...774KB
07/09/14 21:13:33 y9xVRtWv
>302
無い。それと、_rootは回転しないじゃろ?
全体を回転させたいなら、1つのMC(中心が回転軸)に全部ぶっこむ
中心を左上等にする必要があるなら、mcの中心を回転軸とした円運動の式を組む

304:Now_loading...774KB
07/09/14 21:28:34 Vf34kzq9
>>303
_rootもMCなので、回転します。

305:Now_loading...774KB
07/09/15 02:40:22 u0PubEBn
質問です。Flashをメールクライアントとして使いたいと思っています。
受信したデータなどをローカルに保存したいんですが、ファイル入出力
ができません。
ここで質問なんですがFlashとCなどを組み合わせてFlashにない機能を
Cなどで補うことは可能でしょうか?
たぶんアプリケーションにFlashをのせたらなんかできそうな気がするんですが
調べてもなにもでてこないのでご教授願えれば幸いです。

306:Now_loading...774KB
07/09/15 03:34:56 B3bx7q3w
>>305
Cのことはわからないんだけど、vb2005やC#2005ではフォーム上にFlash貼って
fscommandでやり取りできる。

C#だけど。
URLリンク(web.sfc.keio.ac.jp)

でもそういう使い方すると
>Flashにない機能を Cなどで補う
っていうよりもCで作ったアプリにFlashで色づけするって感じになると思う。

307:Now_loading...774KB
07/09/15 03:55:10 ngWHqH2K
ローカルファイルの読み書き程度ならAIRとかZincで十分できるけどな

308:Now_loading...774KB
07/09/15 05:00:27 U1a+GSCe
FLASHってXML出力ならできたよな確か

309:Now_loading...774KB
07/09/15 07:14:13 0mhcD0mY
>>305
ヘルプでExternal APIあたりを参照する
>>308
出力というのが、ファイルとしてという意味なら不可能

310:273
07/09/15 09:35:24 bmSbVgmK
お返事が遅れて、申し訳有りません
(仕事が忙しかったもので……)

>300
最初はXMLも考えたのですが、それよりはJSONのほうが
記述もデバッグもしやすいだろうと考え、フリーのJSON for ActionScript2を
使用しています。

なお、>>284の「1行のパース」は成功し、きちんと演算ができました。
ただし、カッコの部分で手間取っているので、らちが明かないようなら
設計を見直し、>>278の逆ポーランド記法を参考にさせていただこうと思います。

目処がつきましたので、これにて>>273の質問は終了とさせていただきます。
皆様、ありがとうございました。

311:Now_loading...774KB
07/09/15 09:40:06 bmSbVgmK
>309
余談だが、FlashCommunicationServerは、「flv形式なら生成できる」
という仕様を利用して、ログファイルを生成していたりする。

ファイル書き込みができないのはセキュリティ面では意義のあることだが、
アプリ作成側にとっては、けっこう頭が痛い。

312:Now_loading...774KB
07/09/15 15:34:15 U1a+GSCe
力を貸して欲しい。どうしても出来なくて困ってるorz

環境:FlashCS3 ActionScript3.0
目的:niconicoやYoutubeのFLVを、ローカル環境でストリーム再生する

現在、niconicoでテスト中。
手動でCookieを取得し、FLVのURLを渡しているが、開けないとのエラーが出る。

ルートタイムライン(StageにFLVPlaybackを配置)
import fl.video.*
//var FLVPlayer:FLVPlayback
FLVPlayer.source = "URLリンク(smile-com32.nicovideo.jp)

また、FLV再生コンポーネントのFLVPlaybackが「?」を含むURLや「.flv」を含まないURLを
弾く仕様になっていたので、NCManagerの下記個所を修正

NCManagerクラスの変更箇所(614行:条件分岐をコメントアウト)
//if ( parseResults.streamName.indexOf("?") < 0 && parseResults.streamName.slice(-4).toLowerCase() == ".flv" ) {
 canReuse = canReuseOldConnection(parseResults);
 _isRTMP = false;
 _streamName = parseResults.streamName;
 return (canReuse || connectHTTP());
//}

313:Now_loading...774KB
07/09/15 16:05:53 jSpkWWWt
>>312
ニコニコは外部アクセス遮断してるかと思われ

314:Now_loading...774KB
07/09/15 16:20:25 0Z2nAOxw
Flash CS3 (ActionScript 2.0)

外部ファイルで、下のような、回転を制御する簡単なサンプルを作っているんですが、
class Rect {

private var mc:MovieClip;
private var mc1:MovieClip;

function Rect(base:MovieClip) {
mc = base;

mc1 = mc.attachMovie("rect", "rect", mc.getNextHighestDepth());

mc1.onEnterFrame = function() {

this.rotationMovie();
};
}
function rotationMovie():Void {

mc1._rotation++;
}
}
をつくり、flaファイルのフレームアクションで
var rect:Rect = new Rect(_root);

という感じで記述しているんですが、何も起きませぬ;
どこかマズいんですかね・・・

ステージ上のMCのMC名・リンケージ名は共にrectです。


315:Now_loading...774KB
07/09/15 16:24:59 U1a+GSCe
SWFがクライアント側で動くから、サーバーが遮断してるわけじゃないと考えてたんだけど違うのかな?
再生ページのタグをそのままコピってローカルで動かしても正常に動くから、
自作のFLASHからFLVへアクセスできないのは、自分のソースが間違ってるか、
デフォルトのプレイヤーにASからIDか何かを送るような処理いれてるかだと思うのだけれど。。。

316:Now_loading...774KB
07/09/15 16:32:10 0mhcD0mY
>>314
>this.rotationMovie();
この前にtrace(this);してみる

317:314
07/09/15 17:52:33 0Z2nAOxw
>>316
手直ししたら、動きました。リンケージ名の登録忘れと、
var scopeという変数を利用して、

function Rect(base:MovieClip) {
mc = base;
var scope = this;

mc1 = mc.attachMovie("rect", "rect", mc.getNextHighestDepth());
mc1._x = 200;
mc1._y = 200;

mc1.onEnterFrame = function() {
//trace(this);
scope.rotationMovie();}
}
のようにしたら、動きました。

でも、scope.rotationMovie()の部分は、this.rotationMovie()にすると動かないんですが、thisはダメなんですかね・・・

318:Now_loading...774KB
07/09/16 00:40:31 Yqhe3f+A
305です。回答ありがとうございます。

>306
それはヘルプにのってたんでしってるんですが、fscommandの引数として巨大なデータを。
渡せるんですかね?バイナリとかも。
データ取得とかはFlashでして、それをCに渡して保存とかはやっぱり
無理だと考えたほうがいいですかね。
どうもありがとうございます。

Airはつくったのをインストールしてもらわないと使えないので
今回は使おうと思っていません。

319:Now_loading...774KB
07/09/16 01:02:43 NgBRFJ+T
>317
クラスファイルでのスクリプトと、FLAファイルでのスクリプトでは
入れ子にした場合のthisの指すものが変わるんだよねぇ……。

FLAファイルでは、thisをつけると入れ子、つけないと「スクリプトを
記述している部分」を指すので、スマートな記述ができたんだが
クラスだとそうならない。
なんで、こんな仕様にしたんだろう。
マクロメディア(アドビ)は、おそらく意味があってやってるんだろうけど。

320:Now_loading...774KB
07/09/16 01:51:38 /j12KesV
>>319
mc1のonEnterFrameの中じゃ this が指すのは mc1 になる
それだけの話じゃね? と思ったんだけど

何かよく分からんないので
もう少し詳しく説明してほすぃ

321:Now_loading...774KB
07/09/16 10:21:25 NgBRFJ+T
>320
ああ、言われてみれば>317の挙動はたしかに正しかった。
俺が言おうとしていたのは、thisをつけるかつけないかの
挙動の変わり方が、タイムラインとクラスファイルで
異なってしまうってこと。
>317の例で言うと、

var scope=this;
mc1.onEnterFrame = function() {
scope.rotationMovie();
};
}
の部分は、タイムラインでの記述のようにこう書かせて欲しい。

mc1.onEnterFrame = function() {
rotationMovie()
};
}
クラスファイルでは、thisが無くてもthisを記述したようにふるまってしまうが
タイムラインでは、thisが無ければ(非公式テクニカルガイドで言う)デフォルト参照をする。
で、おれはこっちの書き方のほうが、thisの有り無しで処理を分けられるので
スマートに思えるわけ。いちいち外側から参照を渡すってのは気持ち悪いんだな。

322:317
07/09/16 10:39:57 saZ5CG3k
>>318 >>319

ああ、分かってきました。
scope.rotationMovie();はRect自身のメソッドだけど、
スコープの範囲でthisだと(function内なので)ダメってことですかね。

mc1.onEnterFrame = function() {
rotationMovie()
};
}
と書くほうが分かりやすいですな



323:317
07/09/16 10:40:55 saZ5CG3k
スコープの範囲で > スコープで

324:Now_loading...774KB
07/09/16 12:15:10 /j12KesV
>>321
なるほど ややこしいんだな thx

325:Now_loading...774KB
07/09/16 13:29:42 DCj6dDCu
AS2は付け足しだからレガシー仕様引っ張ってるからな。
そういう意味では初心者にこそむしろAS3をおすすめしたい。

326:Now_loading...774KB
07/09/16 15:58:04 s1MthOZf
>>325
それはない

327:Now_loading...774KB
07/09/16 23:19:16 ESTiE0oe
MovieClipのインスタンスを複製したいんだけどどうやるの?

328:Now_loading...774KB
07/09/16 23:41:52 pMx+rz+m
>>327
duplicateMovieClipを使う

329:Now_loading...774KB
07/09/16 23:43:32 5aMPC9TN
>>321 >>322 >>324
なんかおまいら言ってることおかしくないかー?
この場合、onEnterFrameをmc1のメンバにしてるのが変
this.onEnterFrame = function()にすりゃ良い
「rotationで影響を及ぼしたい場所=Rectインスタンス自身」なのに何故、mc1の中に入れ込んじまうんだw

あとthisの有り無しで処理を分けるなんてことやめた方がいいぜ?
読みにくいスクリプトの見本みたいなもんだよ。

thisは省略しない方がいいとか色んな本に書いてるけど、
あれは「参照をちゃんと記述しないとスパゲッティコードになる」って意味だよ

330:Now_loading...774KB
07/09/16 23:43:37 ESTiE0oe
すいません。>>328
ActionScript3.0と書くのわすれました。

331:329
07/09/16 23:59:15 5aMPC9TN
ごめw ミス

>>thisは省略しない方がいいとか色んな本に書いてるけど、
>>あれは「参照をちゃんと記述しないとスパゲッティコードになる」って意味だよ

シンタックスを使ったオブジェクトのメンバメソッド内でのthis省略、ね
書籍などには「thisは省略しない方がいい」などとは書いてないので注意
まぁ普通にドットシンタックスを把握してる人にとっては、デフォルト参照は分かりにくいのではって話です。

332:Now_loading...774KB
07/09/17 00:17:23 Y5dZ1OyR
>>330
this.addChild(new MCのクラス名()) クラスは自動生成されるから別に作らなくてもおk

333:Now_loading...774KB
07/09/17 00:18:36 2hvSJKkL
>>326
プログラム言語として言えばAS3.0の方がスマートだしわかりやすいよ。
まあ、AS2.0しか知らない人には、今まで苦労して理解したのに。。
っていういうことはあるかもしれんけど。

334:Now_loading...774KB
07/09/17 00:26:43 2jshZNy/
AS2->AS3の移行で戸惑う人はほとんどいないだろ。
AS1しか書いてなかったからAS3が理解できないってんなら分かるが。

335:Now_loading...774KB
07/09/17 00:29:23 Y5dZ1OyR
そうだな。
ていうかJavaや.NETから入った俺からすれば、AS2.0を覚えれたのはすごいと思うけどな。
ワケ分からん仕様多いしさ。2.0理解したんなら3.0理解するのなんてすぐだろう
ていうか2.0にどっぷりはまっちゃうと正直危ないと思う

>>322
あんた危ない方向に進んでるよw

336:Now_loading...774KB
07/09/17 00:30:25 2hvSJKkL
>>334
AS1.0-->AS2.0は普通に拡張な感じだけど、3.0へはちと、、、
移行するにしても、相当コーディングし直さなきゃならないとおも

337:Now_loading...774KB
07/09/17 00:41:40 2jshZNy/
AS2からAS3への書き換えは何度かやったがそんなに大変じゃなかったな。
むしろonClipEventとか使ってるAS1をAS2でOOP化するほうが手間だよ。

338:324
07/09/17 00:50:23 lLsXrzzj
>>331
>「rotationで影響を及ぼしたい場所=Rectインスタンス自身」なのに

これは質問主にしか分からない事だと思うよ。
掲示されたのがonEnterFrameをmc1のメンバにしているソースなのだから
それをベースに答えるしかないよ。効率や正しい書き方を聞かれたのなら
まったくおっしゃる通りだと思うけど。

僕は デフォルト参照なんてものを初めて知ったので
「ややこしいんだな」と思ったんだ。

339:Now_loading...774KB
07/09/17 01:14:20 iNf8t6Bu
OOPなんて言葉まだあったんか。

別にAS3自体を否定する訳じゃないけど、初学者が学ぶには
言語だけでなく概念を理解しなければならないから途中で
投げてしまう人口を増加させてしまうと思う。

エスペラント語ってすっきりしていて便利だよね、みたいな話だと思う。

340:Now_loading...774KB
07/09/17 01:17:35 6k7bATPM
>>338
ん? 横から入って悪いけれど、それは違うんじゃない?
もいっかいソースやレス見直してみたらどーかな

俺にも、onEnterFrameをmc1のメンバにしてる意味がわからないよ。
そしてソースが動かない原因も、onEnterFrameをmc1のメンバにしてるせいだしね。
提示されたソースが間違ってたから動かないんだよ。見当違いな解決策だすより、そこを指摘するのが妥当でしょ。

341:322
07/09/17 02:13:05 6fW/4BX0
んーんと、ちょい混乱してるわけですが。

まず、Javaちょこっとかじって来ました。AS始めたばっかりです。
で、指摘されてる部分は、mc1.onEnterFrame...でいいんですよね?

この場合
MovieClip(flaファイルに慣れてないので)をあんまり弄らなくても、いい手法かなと思ったんで、こう書いてみたわけですが、異端な書き方なんですかね?
あくまで、MovieClip側に何かアクションを起こしたいわけです。

サンプルでMovieClipにextendsさせる方法も見ましたが、そっちのほうが主流なんでしょうか?

342:Now_loading...774KB
07/09/17 03:43:08 lLsXrzzj
>>340
ソースとレスを見直した結果
僕は間違っていました。申し訳ない。


MovieClip を extends するなら

/// 外部ファイル
class Rect extends MovieClip{
function Rect() {
this.onEnterFrame = rotationMovie;
}

function rotationMovie():Void {
this._rotation++;
}
}

//fla メインタイムライン
var rect = _root.attachMovie("rect", "rect", mc.getNextHighestDepth());
rect._x = 200;
rect._y = 200;

みたいな感じかな。


343:Now_loading...774KB
07/09/17 06:02:05 Y5dZ1OyR
てかなんでみんなクラス内でENTERFRAME使うの?
俺はIntervalの方が、関数名指定するだけで出来るから好きなんだけどなー
ENTERFRAMEと違ってスレッド削除にも殆ど制約ないし

344:Now_loading...774KB
07/09/17 09:32:00 N8Y+FRzQ
>343
俺もsetInterval派。
onEnterFrameで行う部分は、setIntervalにしたほうが色々と便利だし。
(ただ俺は、そこに匿名関数を記述するんではなく、関数名をこしらえて
 その関数に処理を渡していくのが好き)

でも、onハンドラから匿名関数をつないでいくって言うイベント記法は
ActionScriptに馴染みのない人でも分かりやすいんだよ。
「対象MCが.どうなったら=処理する{その内容は……です}」
と、一つの塊を見れば一目瞭然だし、
enterFrameだけでなく、loadやpressなどでも同じ書き方ができるので
応用範囲も広い。

イベントを直接管理する記法が主流になれば、いずれ廃れる
書き方かもしれないが、現時点では悪くないと思ってる。

345:Now_loading...774KB
07/09/17 13:26:00 1rQVYVzg
>>342
この場合はthisだからいいけどAS2の場合は関数に処理渡すのもDelegate使う
のが基本と覚えといた方がいい。そうすりゃsetIntervalもonハンドラも使用感は大して変わらん。
>>339
初心者が途中で投げてしまうのは難解さじゃなくてレガシー対策のイレギュラーな処理やバグで
思い通りに動かないからだろ。

346:Now_loading...774KB
07/09/17 18:56:51 rqoIZ334
毎フレーム処理したい のと 一定時間ごとに処理したい の違いじゃないの?

347:Now_loading...774KB
07/09/17 19:14:22 1rQVYVzg
>>346
そうだよ。setInterval派とかいう派閥はない。処理に応じて使い分ければいいだけ。

348:Now_loading...774KB
07/09/17 20:13:22 6k7bATPM
どちらの状況でもないときに使う方の話をしてるんだと思うが。”連続して実行させたい”とか。実際コレが一番多い罠

349:Now_loading...774KB
07/09/17 21:21:42 yNgKhKTu
こういう話になるとがぜんはりきる俺様を見てくれって奴が多いんだよ。ほっとけ。

350:Now_loading...774KB
07/09/17 21:22:08 N8Y+FRzQ
>347
>348の言うとおり、大半の人は「MCを動かす」目的で使う。
そのアプローチが「clipEvent(enterFrame)派」、「onEnterFrame派」
あるいは「setInterval派」などに分かれているのが現状。

他の処理系の人から見れば噴飯ものの分類だろうけど、
これらは「MCを動かす」という目的のもと、同じ分類になっている。
それぞれの意味の違いが分かって、最適のスクリプティングができれば
AS使いとしては上級の部類になるだろう。

個人的には、”デザイナー上がり”の人たちも、これらの奥深さに
触れてもらえればと思っている。プログラマと話が通じると楽しいし、
「絵筆」が増えることで、よりアーティスティックな表現もできるはずだから。

・forループで100個のMCをいちどきにattachMovieするのでなく
 10分の1秒ごとにわらわらとattachMovieしたい……setIntervalでattachMovieし
 100個になったらclearIntervalする
・ボタンクリックを、ムービーの状態によって違う動きにしたい
 ……同じイベントトリガを、別のイベントリスナに登録しなおし、各処理は
 そのリスナのメソッドとして定義しておく

”プログラマ”には簡単すぎるこうした処理も、”デザイナー”には高難易度。
このスレッドは、彼らの架け橋になってくれたら嬉しい。

351:Now_loading...774KB
07/09/17 21:24:23 Mfkvi56+
OOPってもう古い概念なの?

352:Now_loading...774KB
07/09/17 21:25:38 yNgKhKTu
勝手に奥深いとか難しくて高度な事と位置付けたい馬鹿に踊らされてるだけ。可愛そうに。

353:Now_loading...774KB
07/09/17 21:27:11 yNgKhKTu
>>351
全然古くない
ただ「OOPとはこれ」「OOPやらなきゃ馬鹿」とか大上段に構えてる奴らが笑い物になってるだけ
普通に使う考え方

354:Now_loading...774KB
07/09/17 21:31:39 Mfkvi56+
>353
それは良かった。今更ながらFLASH OOPを読んで歓心してた所だ

355:Now_loading...774KB
07/09/17 21:38:20 yNgKhKTu
>>354
あの本は悪くないけど気を付けた方がいい。
よく日本人の英語学習の笑い話で「外資系の会社に、英語は完璧ですという入社希望者が来た
、で、その希望者に『なるほど、じゃああなたはウチの業務がどういうものがご存じですか』と聞い
たら黙ってしまった」というものがあるけれども、あの本はまさにその典型。

FlashOOPが~とか言う奴は実際にやらせてみるとコードひっかきますだけで、成果だすまでに
以上に時間かかるという事が結構あった。そうならないように、あれはあくまで文法の本だってことを
キモに銘じておいた方がいい。

356:Now_loading...774KB
07/09/17 22:14:51 N8Y+FRzQ
>352
さっきから気になってるんだが、きみはまさか
「AS=簡単、気軽な言語」とかおもってないかい?
キミが相当の知識があることは>355を見てもわかるし、きみにとっては
ピクニック気分の言語なんだろう。そこは尊敬する。

でも違う。大半の開発者にとっては、イベントとかクラスとかスコープとかは
いまだ「大上段ニ構える」概念だよ。
なぜって、開発者の大半はきみのようなプログラマじゃない。
アーティストだのデザイナーだのと呼ばれる、絵描きさんだからだ。
専門的な訓練をろくに受けていない頃なら、概念を理解するのは
一大事だってことは分かるだろ。
だから、このスレが有るんじゃないのかい?(ちょい脱線気味だけど)

357:Now_loading...774KB
07/09/18 00:55:05 2sKulJ4Y
Flashみたいなちょこっとスクリプト書く程度の物に
わざわざオブジェクト指向を持ち出してくる輩は哀れ。

358:Now_loading...774KB
07/09/18 01:27:36 cAw2l+pm
それは規模によるでしょ。

フルFLASHのサイトで5000行を超えるASを書いたりしていると
開発技法とデザイナとのやり取りについてあれこれ考えないと
いけないなと思うよ。

でも、気にせずクラスなんて使わずにコーディングするけどな!
それがActionScriptのお気軽お手軽なところなんだし。

359:Now_loading...774KB
07/09/18 01:48:13 pAUTaWBv
>>357
ちょこっとしか書けないんだろw

360:Now_loading...774KB
07/09/18 02:34:22 fRxYsA1E
>>358
ゲームならまだわかるけど、フルFlashサイトで5000行もいくものなの?
ていうかオブジェクト指向にするかどうかは行数で決めるの?

361:Now_loading...774KB
07/09/18 02:46:56 qkhusDJy
プログラムは最終的に思った通りに動けばいい。
過程や…方法なぞ…!どうでもよいのだァーッ!

362:Now_loading...774KB
07/09/18 11:08:56 MvRIbmuP
ウボァ。すごい勢いで挫折しそうなんでエロい人教えて。

1.外部テキストを読み込む
2.読み込んだ文字列をMCに入れる
3.MCのアルファを変化させる

って事がやりたいんですが、MCのアルファは変化してもMC内テキストのアルファが変わってくれません。
flash内で事前にテキストを分解(アウトライン化?)しておけばアルファを弄れるのですが、
なるべく、"テキストデータのまま"で処理したいのです。

現在は応急処置として、マスクレイヤーを追加してMCを無理やり透過させていますが、
他の良い方法でなんとかならんでしょうか。

363:Now_loading...774KB
07/09/18 12:15:23 CPBdjEuF
>>362
基本的には、デバイスフォントではアルファ変化とかはできない。
その場合は、テキストを分解じゃなくて、テキストフィールドに必要な文字を埋め込む。
必要な文字数が膨大だと、ファイルサイズも膨大になる。

364:Now_loading...774KB
07/09/18 12:16:32 d/VnrghS
>>362
アルファベットくらいなら全部埋め込みフォントにすれば透過できたと思う。日本語あるときっついね。
Fla8以降なら一旦bitmapdataにdrawして、それを透過表示するとかでできるんじゃないかな?

365:Now_loading...774KB
07/09/18 12:18:35 bWu2MPRH
システムフォントはアルファ変更できない。
上レイヤに背景色をかぶせてアルファを変えるか
フォントを埋め込みにすれ。

366:Now_loading...774KB
07/09/18 12:49:59 pAUTaWBv
>>360
ステップ数は規模の大きさの判断の指針として使える
100行のプログラムと5000行のプログラムが同じコストがかかるとは思えないよね

367:Now_loading...774KB
07/09/18 13:52:30 AAm22yJ7
>>360
俺は仕様追加や更新するかどうかでOOPにするか決めるな。
最初多少手間でも後から相当楽できるから結局楽をしたいことには変わらん。

368:Now_loading...774KB
07/09/18 20:51:57 MvRIbmuP
>>363-365
ありがとごじます。なんと。埋め込みフォント。知らなかったです。
日本語を使わないので英数字のフォントを埋め込んで解決しました。

BitmapData.draw()でフォントを画像データにする方法でも無事透過出来ました。
日本語をダイナミックテキストで扱う場合はこちらの方法が良さそうですね。

ASスレのはずなのにスレチで失礼。

369:Now_loading...774KB
07/09/20 20:18:26 Rm1sHKpH
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)

セキュリティについて質問です。

現在swf内部の記述(AS)が読めるソフトが出回っていますが、今のところ
『最も中身が見れない(バレない)方法』にはどのようなものがあるのでしょ
うか?

つまりは、プロテクトを掛けたいと思っています。
この辺りの技術はイタチごっこでいずれ破られるとは思いますが、一時的に
せよ保護したく思っています。

一応、「Flash便利帖」(インフォメディア著 毎日コミュニケーションズ)のp202で
パブリッシュ設定 → 読み込みプロテクト は勉強しました。

370:Now_loading...774KB
07/09/20 20:26:49 YnUhWzLm
URLリンク(www.amayeta.com)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch