다른 클래스에 매개 변수로 전달 된 클래스 참조를 인스턴스화하지 못했습니다. 이 예에서 ActionScript - 필수 매개 변수를 포함하는 클래스 참조 전달 및 인스턴스화?
3 개 종류가있다 : MainClass, 캔버스, 내가 MyCircle의 인스턴스를 생성하기 위해 원하는만큼 MyCircle의 클래스 참조를 전달 제가 캔버스의 인스턴스를 생성하고있는 MainClass에서 MyCircle캔버스 내에서. 그러나 MyCircle 생성자에는 Canvas 내에서 만들어지는 필수 매개 변수가 포함되어 있습니다.
필수 매개 변수를 사용하여 클래스 참조를 전달하고 인스턴스화하는 방법은 무엇입니까?
MyCircle :
package
{
//Imports
import flash.display.Shape;
//Class
public class MyCircle extends Shape
{
//Constructor
public function MyCircle(color:uint, radius:uint)
{
graphics.beginFill(color, 1.0);
graphics.drawCircle(0, 0, radius);
graphics.endFill();
}
}
}
캔버스 :
package
{
//Imports
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
//Class
public class Canvas extends Sprite
{
//Constructor
public function Canvas(circleClassReference:String, amount:uint)
{
var CircleReference:Class = getDefinitionByName(circleClassReference) as Class;
for (var i:uint = 0; i < amount; i++)
{
var randomColor:uint = Math.random() * 0xFFFFFF;
var randomRadius:uint = Math.random() * 100 + 50;
var circleInstance:DisplayObject = new CircleReference(randomColor, randomRadius);
circleInstance.y = i * randomRadius;
addChild(circleInstance);
}
}
}
}
MainClass :
package
{
//Imports
import flash.display.Sprite;
//Class
public class MainClass extends Sprite
{
//Constructor
public function MainClass()
{
var myCanvas:Canvas = new Canvas("MyCircle", 10);
addChild(myCanvas)
}
}
}
,617,
[편집]
대신 클래스의 이름의 실제 클래스를 전달 아래 나와있는 더러운 수정의 필요성을 피할 것으로 보인다.
MainClass 생성자
public function MainClass()
{
var myCanvas:Canvas = new Canvas(MyCircle, 10);
addChild(myCanvas)
}
캔버스 생성자
public function Canvas(circleClassReference:Class, amount:uint)
{
var CircleReference:Class = circleClassReference;
for (var i:uint = 0; i < amount; i++)
{
var randomColor:uint = Math.random() * 0xFFFFFF;
var randomRadius:uint = Math.random() * 100 + 50;
var circleInstance:DisplayObject = new CircleReference(randomColor, randomRadius);
circleInstance.y = i * randomRadius;
addChild(circleInstance);
}
}
어디서나 서클 클래스를 실제로 가져 옵니까? ? 내가 아는 한 제대로하고있다. 그러나 컴파일 타임에 코드가 MyCircle 클래스를 가져올 수있는 방법을 알지 못한다. 어떤 오류가 발생하고 있습니까? – shanethehat
이 예제에서는 모든 3 개의 클래스가 동일한 패키지 디렉토리에 있으므로 가져올 필요가 없습니다. 나는이 클래스의 Canvas 클래스에 오류를 던집니다 :'CircleReference : Class = getDefinitionByName (circleClassReference) as Class; – TheDarkIn1978
'MyCircle '을 참조하지 않으면'ReferenceError : Error # 1065 : Variable MyCircle is not defined. '당신의 코드 어디서나, 클래스는 컴파일러에 의해 포함되지 않을 것이다. MainClass 클래스 멤버에'private static var dummy : MyCircle'과 같은 것을 추가하고 다시 시도하십시오. – bummzack