全然知らなかったのでメモメモ。

package {
public class Test {
public function Test() {
var ContentsTitle = new ContentsTitle();
}
}
}

変数のContentsTitleがパブリッシュ時にどこかで生成されているのか分からないけど、変数名を変えるとエラーが無くなったのね。
うーん、基本的なエラーなのか分からないがググっても対処法が出てこなかった。。。
このError #1007が出た場合は変数名を見直せ!
と言うことね、多分。

とっても知っている人は詳しく教えて下さい。


Comments

はじめまして。
「とっても知っている人」ではないのですが
クラス名と同じ変数名は使えないんだと思います。
--
import flash.display.Sprite;
var Sprite = new Sprite();
--
これでも同じエラー出ますし。
自分も似たようなところで、AS2ではシンボル名とインスタンス名を同じにする癖があったので、AS3を最初に触ったとき、
シンボル名:mc
リンケージのクラス名:mc
として、これをステージ上に配置して、インスタンス名を「mc」にしたときになぜエラーになるのかで悩んだことがありました。

Posted by: michi at March 10, 2008 05:20 AM

michiさん
初めまして!
なるほど、知りませんでした・・・。
僕も良くシンボル名とインスタンス名を一緒にしてしまっているので気をつけます!!

Posted by: rakeem at March 10, 2008 06:40 AM

こんにちわー。
こうすると分かりやすいかもしれません。
ContentsTitle の宣言はどこにもないはずなのに、出力に [class ContentsTitle] と出ると思います。

package {
public class Test {
public function Test() {
trace( ContentsTitle );
}
}
}

という感じで、すでに定義済みのクラスがあるにも拘らず、同じ名前のものローカル変数として作成(これはエラーが出ない)していたので、作ったローカル変数に対して new が行われている状態になって「コンストラクタ以外に試行されました」となってると思います。

Posted by: taka:nium at March 10, 2008 12:48 PM

> taka:niumさん
おぉ〜、なるほどありがとうございます!
なんとなく分かりました、あとはTry and Errorで頑張ります!!

Posted by: rakeem at March 10, 2008 01:28 PM

すいません。ちょっと勘違いしてました。
”ContentsTitle”自体はどこにも宣言してないんですよね?
var ContentsTitle = new ContentsTitle();

var a = new a();
でも同様のエラーが発生します。でも
var a= new ContentsTitle();
だと「未定義である可能性・・・」って出ると思います。
ここからは憶測なのですが
最初に「var ContentsTitle 」ですでに変数”ContentsTitle”が生成されて、そこに”new”で”ContentsTitle”のインスタンスを生成しようとしているわけです。
でも、最初に定義された変数”ContentsTitle”は、まだ中身が”undefined”なので、結果的にundefinedでインスタンスを作ろうとしていることになり、当然”undefined”はコンストラクタにはなり得ないので表題のようなエラーが出てるのだと思います。

Posted by: michi at March 11, 2008 04:19 AM

すいません。さらに勘違いでした。
ContentsTitleクラスは作成されてるんですね。
でも理由は多分上記であってると思います。
var ContentsTitle;
trace(ContentsTitle);
とすると出力は”undefined”になります。
ごめんなさい。

Posted by: michi at March 11, 2008 04:26 AM

michiさん

色々とありがとうございます。
なんとなく理解出来てきましたであります!!

やっと、少しずつ理解が出来てきた・・・。
まだまだ理解不足ですがこれからも宜しくお願いします。

Posted by: rakeem at March 12, 2008 01:29 AM
Post a comment









Remember personal info?