トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     シンボルとしてあるクラスの拡張の方法について
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
とんび
Åê¹ÆNo.47225
投稿日時: 2011-3-17 1:24
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: シンボルとしてあるクラスの拡張の方法について
 なるほど…、どうもCS3では、[基本クラス]は空でもいいはずなんだけど、何か入れておかねばエラーになる、しかもMovieClipやSprite以外でもやっぱりエラーという感じです。
 ダミー文字列として"flash.display.MovieClip"を入れとけば[基本クラス]は無視されて、[クラス]に入力したクラスと拡張元のクラスが使われるってことなのかな…多分。
 ちなみにCS3では[基本クラス]に何か入力しておいて[OK]して、また開いても[基本クラス]は消えていません。
 この挙動はかなり黒に近いグレーというか、もうはっきりバグなんじゃないだろうか後のバージョンで挙動が変わっている辺り特にバグっぽい。

 ともかく、おかげさまで拡張したクラスをムービークリップシンボルに割当てる事ができました。
 ありがとうございます。


----------------
鳶嶋工房

野中文雄
Åê¹ÆNo.47224
投稿日時: 2011-3-17 0:36
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: シンボルとしてあるクラスの拡張の方法について
バージョンによって、ふるまいが異なるかもしれません。Professional CS5では、[基本クラス]は空でも受入れられます。また、デフォルトのMovieClipのままで[OK]ボタンを押しても、改めてダイアログボックスを開いて確かめると、[基本クラス]のフィールドは空になっています。
引用:
tonbiさんは書きました:
 との事ですが、[基本クラス]を空にすると
「基本クラス名は有効な識別子でなければなりません。英数字またはサポートされているシンボルのみを使用したクラス名を入力してください。」
というダイアログが出て、にっちもさっちもいかなくなってしまいます。

 "flash.display.Sprite"を[基本クラス]に入力するとエラーは起きないのですが、本当にこれでいいのか理屈がよく判りません。コードではExtendedObjが継承しているのはSpriteを直接ではなく間にSuperObjを挟んでいるからです。


----------------
 

とんび
Åê¹ÆNo.47223
投稿日時: 2011-3-16 23:46
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: シンボルとしてあるクラスの拡張の方法について
 返信ありがとうございます。

>結論からいうと、[基本クラス]を入力する必要がありません。[クラス]に設定されたクラスExtendedObjが、その定義中に継承を定めているからです。エラーの前段を意訳すると、そういうことです。

 との事ですが、[基本クラス]を空にすると
「基本クラス名は有効な識別子でなければなりません。英数字またはサポートされているシンボルのみを使用したクラス名を入力してください。」
というダイアログが出て、にっちもさっちもいかなくなってしまいます。

 "flash.display.Sprite"を[基本クラス]に入力するとエラーは起きないのですが、本当にこれでいいのか理屈がよく判りません。コードではExtendedObjが継承しているのはSpriteを直接ではなく間にSuperObjを挟んでいるからです。


----------------
鳶嶋工房

野中文雄
Åê¹ÆNo.47222
投稿日時: 2011-3-16 23:09
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: シンボルとしてあるクラスの拡張の方法について
結論からいうと、[基本クラス]を入力する必要がありません。[クラス]に設定されたクラスExtendedObjが、その定義中に継承を定めているからです。エラーの前段を意訳すると、そういうことです。

後段は、では[基本クラス]はどういうときに使うのかを説明しています。
引用:
tonbiさんは書きました:
SuperObj.as
package
{
import flash.display.Sprite;

public class SuperObj extends Sprite {}
}


ExtendedObj.as
package
{
public class ExtendedObj extends SuperObj {}
}


* 上記の二つのクラスファイルを用意します。
* 同じフォルダ階層に置いたflaファイルにムービークリップシンボルを作ります。
* リンケージのシンボルのクラスにExtendedObj、基本クラスにSuperObjを指定します。
* [OK]ボタンを押すと、以下のようなエラーメッセージが書かれたダイアログが出ます。

「指定されたクラスは定義済みで自身のサブクラスを拡張しているので、基本クラスは使用されません。基本クラスを使用する場合は、自動生成される [クラス] フィールドでクラス名を指定するか、デフォルトの基本クラス ‘flash.display.MovieClip’ を [基本クラス] フィールドに入力してください」


----------------
 

とんび
Åê¹ÆNo.47221
投稿日時: 2011-3-16 22:07
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
シンボルとしてあるクラスの拡張の方法について
SuperObj.as
package
{
import flash.display.Sprite;

public class SuperObj extends Sprite {}
}


ExtendedObj.as
package
{
public class ExtendedObj extends SuperObj {}
}


* 上記の二つのクラスファイルを用意します。
* 同じフォルダ階層に置いたflaファイルにムービークリップシンボルを作ります。
* リンケージのシンボルのクラスにExtendedObj、基本クラスにSuperObjを指定します。
* [OK]ボタンを押すと、以下のようなエラーメッセージが書かれたダイアログが出ます。

「指定されたクラスは定義済みで自身のサブクラスを拡張しているので、基本クラスは使用されません。基本クラスを使用する場合は、自動生成される [クラス] フィールドでクラス名を指定するか、デフォルトの基本クラス ‘flash.display.MovieClip’ を [基本クラス] フィールドに入力してください」

 なんで?

 そもそも、このエラーの意味も全然意味が分かりません。
 自身のサブクラスを拡張している、ってどういう状態を指しているの?
 自動生成される[クラス]フィールドって何?

 そもそも基本クラスって何ぞや????? extendsの後ろに書かれるものじゃないの?

 数年前、AS3に入門して、このへんで挫折して挫折しっぱなしです。


----------------
鳶嶋工房

スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops