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

このエントリーをはてなブックマークに追加
952Now_loading...774KB:2010/10/19(火) 14:05:27 ID:auIFTQ4c
>>951
その解釈はおかしい。
動けばOKであればそれでいいけど。

>var keisanki:MovieClip = new Keisanki();
keisankiはMovieClipとして、宣言してあって、
MovieClipには、kekkaと言うプロパティは無いから
>1119: 未定義である可能性が高いプロパティ kekka に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。
このようなエラーが出ている。
953Now_loading...774KB:2010/10/19(火) 14:39:45 ID:bcofFJ0G
>stage.kekka = display.text;
stageにkekkaというプロパティがないって言われてるんじゃないのか
kakkaそのままとかthis.kekkaでアクセスすればいいと思うけど
954Now_loading...774KB:2010/10/19(火) 15:22:42 ID:mKMf4QqU
>>950
Mainクラスにある
public var kekka:String; を
public static var kekka:String; にすれば
Main.kekkaでアクセスできると思うけど。

そもそもMainクラスにあるプロパティにどうしてstage.kekkaでアクセス
できると思ったのかが意味不明。

>>953
外部クラスからのアクセスなんだからthisじゃ参照できないよ。
955943:2010/10/19(火) 16:12:31 ID:p/nbz0wI
>>948

ありがとうございます!
ああ、やっぱりそうなりますか……。

removeChildだけでいけたら
ソースが綺麗になるなと思っていたのですが……。

956Now_loading...774KB:2010/10/20(水) 00:27:26 ID:qkw3nAFM
ものすごく初歩的なことだと思うのですが
CS5体験版を入れてActionScript3.0 クラスというのを選んで起動したのですが
これを実行するにはどうすれば良いのでしょうか
メニューのデバッグには「ムービーをデバッグ」とかいうのしかないし
デバッグコンソールの▼みたいなボタンは無効だし

もしかして、.flaのプロジェクトじゃないと実行は無理ですか?

コード
package {
public class Main {
public function Main() {trace("hello world"); }
}
}
957Now_loading...774KB:2010/10/20(水) 01:19:42 ID:qkw3nAFM
956ですが自己解決。flaとセットじゃないとダメってことですね
958Now_loading...774KB:2010/10/20(水) 13:42:50 ID:zWdQmAox
FlashCS4(AS3,Player10)WinXP-ProでXMLの扱いを勉強していますが、名前空間(Namespace)を
使った要素の値参照で困っています。 ※下は使用したXMLです(すいません全部記載します)
var klmObj:XML = <topNS:kml xmlns:topNS="http://com/kml/2.2">
<?xml version="1.0" encoding="UTF-8"?>
<topNS:Document xmlns:docNS="http://com/kml/docNS">
<docNS:Placemark placeNS:idx="0" xmlns:placeNS="http://com/kml/placeNS0">
<placeNS:name>名前0</placeNS:name>
<placeNS:description>詳細1</placeNS:description>
<placeNS:Point sub="0123">
<coordinates>118.169172,30.0547,436.3</coordinates>
</placeNS:Point>
</docNS:Placemark>
<docNS:Placemark placeNS:idx="1" xmlns:placeNS="http://com/kml/placeNS1">
<placeNS:name>名前1</placeNS:name>
<placeNS:description>詳細1</placeNS:description>
<placeNS:Point sub="1234">
<coordinates>118.169172,30.054,436.3</coordinates>
</placeNS:Point>
</docNS:Placemark>
</topNS:Document>
</topNS:kml>;

ここで、var placeNS:Namespace = klmObj..docNS::Placemark[0].namespace("placeNS");
とすれば(上から辿る形にすれば)、下の2つはOKです。
trace("idx= "+klmObj..@placeNS::idx);// 0 が出る
trace("name= "+klmObj..placeNS::name);// 名前0 が出る

しかし、要素の値を名前空間を直接指定して参照しようとしましたが何も出ません。つまり、
var placeNS_:Namespace = new Namespace("placeNS", "http://com/kml/placeNS0");
trace("name_= "+klmObj..placeNS_::name);// 何も出ない

このように、上から辿る形でなく直接参照することは不可なのでしょうか?
959Now_loading...774KB:2010/10/20(水) 15:24:30 ID:FmGF/v3R
mc.constructorを使ってmcを動的生成した時に、
mc2.txt=""みたいな感じで動的生成したmcの中身にアクセスすると
"未定義"のエラーがでます。
フレームを変えてアクセスするとうまくいくのですが、同じフレームで対処する方法はありますか?
960Now_loading...774KB:2010/10/20(水) 15:40:20 ID:muF7TSQL
AS2のやりかただっけ?
961Now_loading...774KB:2010/10/20(水) 15:43:59 ID:FmGF/v3R
すいません、AC3です
962Now_loading...774KB:2010/10/20(水) 16:49:20 ID:muF7TSQL
AC3 アーマークラス 3ということは、まだ装備がそろってないって事か。

AS3では、constructorの返値ってClassじゃないっけ。
フレーム変わるとアクセスできるのが不思議な感じがするが、
ダイナミックプロパティなんだろうか?
963light:2010/10/20(水) 17:15:53 ID:iQJlb5m5
いまFlash CS4 ゲーム制作教科書という本で神経衰弱のゲームを作成しているのですがエラーが出てしまい進まなくなっています。解決策を教えてください。
エラーが出る文章は↓

addEventListener(MouseEvent.CLICK,Change_Card);

function Change_Card(event:MouseEvent):void{
var click_Name:String = parent.name; //trase ( "click_Name= " +click_Name);
Object(root).click_Card( click_Name);
Object(root).gotoAndPlay("omote"); //Object(parent)
}

でムービーに変換して実行すると
TypeError: Error #1006: click_Card は関数ではありません。
at _fla::Back_Card0_2/Change_Card()

と出てしまいます。
どこがエラーになってる原因なのでしょうか…?

964Now_loading...774KB:2010/10/20(水) 18:18:27 ID:eOto7fzO
test
965Now_loading...774KB:2010/10/20(水) 21:04:32 ID:dKopR9IU
>>958
XMLに特に詳しくもないんで的外れだったらゴメンだけど、

>var placeNS_:Namespace = new Namespace("placeNS", "http://com/kml/placeNS0");

これって新たに別のNamespaceオブジェクト作ってるだけであって、klmObjとは全く関係ないオブジェクトじゃないの?
ここからklmObjの情報が取れるとはちょっと思えないんだが
966Now_loading...774KB:2010/10/21(木) 08:02:57 ID:U/xnH6ZN
AS3、FlashDevelopで開発中の者です。

マスクについて質問をさせてください。

一方がマスクとなってもう一方を切り取りとるような、2つのオブジェクトがある場合、
その2つのオブジェクトに対して、更にマスクをかける方法はあるでしょうか?


具体的な話をすると、
文字の形の図形の色をFlash上で変更できるようなシステムを作っていて、

colorChar   → Sprite型から継承したクラスのオブジェクト。
charMask    → colorChar内、Loader型のオブジェクト。文字の形の画像をcolorFieldのマスクにする。
colorField   → colorChar内、Sprite型のオブジェクト。色のついた面。この図形の色を変えることで、文字の色が変わる

というような形で実装しています。
その色のついた文字をいくつか使って、枠の中に配置していこうとしています。
枠というのはSprite型で作った長方形で、そこと重なっている部分だけ、
文字を表示したいのです。

そこでマスクをかけようとしたのですが、上手くいきませんでした。
マスクとして使用されているcharMaskや、
すでにマスクをかけられているcolorFieldにマスクをかけられないのは
想定通りでしたが、
その2つを内包するcolorCharにもマスクがかけられませんでした。
そういうものなのでしょうか?

何らかの解決方法をご存知の方、よろしくお願いします。
967Now_loading...774KB:2010/10/21(木) 16:08:42 ID:ZGN/4HED
AS2.0で ドラッグできるMCの上に 何もできないMCを重ねて隠してるのですが
下に隠してあるMCをドラッグできてしまいます。
ドラッグできなくするにはどうしたらよいでしょうか。
968Now_loading...774KB:2010/10/21(木) 16:53:13 ID:mp7rzkMN
>>296
やり方違うけど、BitmapAssetでPNG画像読み込んで、
PNGの透過部分で画像をマスクしたときは、4枚ぐらい重ねたけど問題なく出来た。
969Now_loading...774KB:2010/10/21(木) 17:39:01 ID:M7WoBnDC
>>967
MC.enabled=false
970967:2010/10/21(木) 17:48:37 ID:ZGN/4HED
ありがとうやってみます。
対象がいっぱいあるので 一段階別のMCに入れた方がよさそうですね。
971Now_loading...774KB:2010/10/21(木) 17:51:57 ID:mp7rzkMN
>>968 の安価は >>296じゃなくて>>966 でした。
972967:2010/10/21(木) 18:50:03 ID:ZGN/4HED
enabledでできましたが
空MC
 ├ ドラッグできるMC1
 ├ ドラッグできるMC2
 ├ ドラッグできるMC3
にして
空MC.enabled=false;
で 1〜3も使えなくなるようにできれば、と思ったのですができないようです。
1個づつenabledを変更するしか手はないのでしょうか。
973Now_loading...774KB:2010/10/21(木) 19:06:03 ID:M7WoBnDC
>>972
空MCにonPressとかのイベント(アクションは未定義でオッケ)を定義しておけば、
下のイベントは拾わなくなる

forループなどを使えば、一斉に変更するのはそれほど手間じゃないと思う
974Now_loading...774KB:2010/10/21(木) 20:32:55 ID:0FXOXJ5V
AS2.0でアクションゲームを作成しようとしています。
壁を作るにあたって、ムービークリップ同士の衝突判定をしようとhitTestで判定を行おうとしているのですが、
プレビューをしてみたところ判定が行われず、壁のムービークリップをすり抜けてしまう状態です。
判定部分は以下になります。

if (this.hitTest(_root.hero.getBounds(_root).xMax, _root.hero._y, true)) {
this._x -= 5;
}
if (this.hitTest(_root.hero.getBounds(_root).xMin, _root.hero_y, true)) {
this._x += 5;
}
if (this.hitTest(_root.hero._x, _root.hero.getBounds(_root).yMax, true)) {
this._y -= 5;
}
if (this.hitTest(_root.hero._x, _root.hero.getBounds(_root).yMin, true)) {
this._y += 5;
}

※hero=キャラクターのムービークリップ名

問題点等ありましたらご指摘よろしくお願いいたします。
975967,972:2010/10/21(木) 20:55:53 ID:ZGN/4HED
ということは 上に重ねるMCに
onPressイベントを定義しておけばいけそうですね。
やってみます。ありがとうございました。
976Now_loading...774KB:2010/10/22(金) 00:13:13 ID:WR2g1UAq
>>974
なんかよくわからんのだけど
thisは何なの?
heroがthisならこれ壁が出てきてないじゃないか

if(hero.hitTest(壁MC)){
方向転換処理
}
見たいな感じにするんじゃないかな?
977958:2010/10/22(金) 02:06:17 ID:i3N+ngFS
>>965
レスさんきゅう!
確かに、対象全体のXMLオブジェクトのklmObjと関連付ける記述が無いですよね。

とりあえず、楽しようとせずに klmObj..placeNS::[要素とか] の形式で書きます。
978Now_loading...774KB:2010/10/22(金) 04:48:51 ID:5b0lO25L
環境:CS4,WinXP,AS3(またはAS2),Player10

随時変化するグラデーション背景を持つ親SWFに子SWFを読み込ませようとしていますが、
親子間で背景が一致せず悩んでいます。 ※常に子のステージの色があるため

理想的には、子SWFが透過GIFのように絵柄(MC)だけだったり、AIRの透明ウィンドウアプリケーション
のようにして親に読み込ませることです。

特にAS3には拘りません(AS2は「ある意味」自由度が大きいですしw)
よろしく願います。
979978:2010/10/22(金) 05:13:02 ID:5b0lO25L
(上の補足)
開発環境もFlashCS4に拘りません(Flexとか)。Player10.1でも実現可能なら導入します。
980Now_loading...774KB:2010/10/22(金) 10:22:18 ID:507scNeO
>>978
子swfのオブジェクトが何もない部分は普通に透過するとおもうけど。AS2だけど
AS3だと透過しないのか??

俺何か読み間違いしてる?
981974:2010/10/22(金) 10:29:22 ID:o5tZ+nmQ
>>976
レスありがとうございます。
thisは壁のムービークリップになります。
上記のソースは壁のムービークリップに持たせてあります。
説明不足で申し訳ありませんでした。

下記URLに問題をまとめた画像を用意しました。
ご覧いただければと思います。
http://www1.axfc.net/uploader/Img/so/98162
982Now_loading...774KB:2010/10/22(金) 12:53:10 ID:507scNeO
>>981
heroはどういう風に動いてんの
>>974の部分だけ和訳すると
壁とheroの右端の一点が重なったとき壁を横にー5動かす
壁とheroの左端の一点が重なったとき壁を横に+5動かす
壁とheroの下端の一点が重なったとき壁を縦に+5動かす
壁とheroの上端の一点が重なったとき壁を縦にー5動かす
になる
一切heroに指示出してないんだけど
heroの向きを変えたいんじゃないの?
983978:2010/10/22(金) 20:12:51 ID:I5++075G
>>980
すいません。検証不足でした。
確かに子SWFの背景は透明になります。
984Now_loading...774KB:2010/10/23(土) 00:40:08 ID:vVi2A2ii
AS2.0で質問です

root上に400*300の親MCを設置(手動)して、rootのフレームからさっきのMC内に
20*196くらいの子MCをattachMovieで縦に40個くらい呼び出した後、
親MC内でtrace(this._height)とやると400と出てしまいます。
縦幅20の子MCが縦に40個の場合ですので800という値が欲しいのですが、
どうすればよいのでしょうか。ちなみに無理やり_height=800と
記述すると親MCが正規の縦幅で表示されなくなります。(縦に伸びた感じ?)
985Now_loading...774KB:2010/10/23(土) 00:54:31 ID:jcNzJsRE
親のmcでthis.heightやってるんだから、親=thisで親のheightが表示されている=400で正しいわけだが。
986Now_loading...774KB:2010/10/23(土) 01:17:30 ID:4qgUJuXw
えぇ?そうかぁ?
ちょっと今、親よりでかい子1個で実験したら
子MCの_heightが返ってきたんだけど?
>>984
traceするタイミングか場所間違えてない?
てか俺がなにかまちがえてるのかなぁ?w

とりあえずもう寝ます。また明日
987Now_loading...774KB:2010/10/23(土) 01:18:26 ID:YTff8VPR
>>984
_root.親MC._heightで、求める高さが出るよ
988Now_loading...774KB:2010/10/23(土) 06:44:57 ID:1eoNlHd8
AS3のWinXP(FlashCS4)です。

SWFが再生されたとき、それが「ブラウザか何かに埋め込まれている」か
「単独(スタンドアローン)か」をASで判別する術はありますか?
989Now_loading...774KB:2010/10/23(土) 16:58:18 ID:uyYxp6hb
>>988
flash.system.Capabilites.playerType

あとはjavascriptオン前提で環境が限られるけどExternalInterface使ってブラウザかそれ以外かを判別かな
990Now_loading...774KB:2010/10/23(土) 17:01:42 ID:uyYxp6hb
>>988
ああ…タイプミスすみません↓が正しいです
flash.system.Capabilities.playerType
991Now_loading...774KB:2010/10/23(土) 17:09:55 ID:vVi2A2ii
>>985-987
1フレームしか使ってないのでタイミングとかは平気だと思います。
もしかしてMC内からのtrace(_height)とルート上からtrace(親mc._height)って
値が違うなんてあります?
992Now_loading...774KB:2010/10/23(土) 17:25:27 ID:97+3rjer
trace(this._height)だとthisを間違えてる場合正しい答えにならんから
trace(親mc._height)で確認できるってことでしょ
とりあえずやってみそ
値が違う場合はthisが親mcでなかったってことで
993Now_loading...774KB:2010/10/23(土) 17:36:43 ID:uyYxp6hb
>>991
ルートに400×300ピクセルのインスタンスpMCを配置
高さ20ピクセルのcMC(識別子cMC)をシンボルで作成

for(i=0; i<40; i++){
MC = pMC.attachMovie('cMC', 'cMC'+i, i);
MC._y = i*20;
}
trace(pMC._height)

これでちゃんと800がトレースされるはず
パスか、座標か何か間違えてると思います
994Now_loading...774KB:2010/10/23(土) 17:46:40 ID:uyYxp6hb
追記
1フレームしか使ってないということですが
ちゃんとattachMovieが終わった後にトレースするようになってますか?
ルートのタイムラインやムービー内のタイムラインに分散してスクリプトを書くような場合は、
レイヤーの読み込み順や処理順をきちんと考慮しないと期待する値が返ってこない場合があります
995Now_loading...774KB:2010/10/23(土) 19:35:02 ID:2yuPMWuR
javaスクリプトで応答信号を作っておくとか?
996988:2010/10/23(土) 19:49:54 ID:8Wazg/Wz
>>990
なるほど。Playerのタイプで判別でつね。



あと、どなたか次スレ準備願います。
997Now_loading...774KB:2010/10/24(日) 12:42:20 ID:aGV7pB0h
建てました

ActionScript 誰かが物凄い勢いで解答するスレ27
http://hibari.2ch.net/test/read.cgi/swf/1287891645/
998Now_loading...774KB:2010/10/24(日) 14:38:01 ID:yQh4M9eM
>>997
Thx
999Now_loading...774KB:2010/10/24(日) 20:44:33 ID:/c1FxQjv
ume
1000Now_loading...774KB:2010/10/24(日) 20:46:15 ID:/c1FxQjv
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。