를 복제 문제 :다음과 같이 내가 ByteArray 클래스를 확장 한 확장 된 ByteArray
[RemoteClass(alias="MyByteArray")]
public class MyByteArray extends ByteArray {}
하고이 ByteArray #의 readObject()를 사용하여이 클래스의 인스턴스를 복제 /의 writeObject(). 그러나 어떤 이유로 복제 된 객체는 MyByteArray가 아닌 ByteArray의 인스턴스입니다. 이는 다음 예제에서 설명 :
내가 MyByteArray 클래스에서 일부 사용자 정의 필드를 추가 할 때, 그들은의 writeObject (함께 저장되지)와 어느 쪽도 복제되지 않습니다 또한registerClassAlias("MyByteArray", MyByteArray);
var b1:MyByteArray = new MyByteArray();
var tmp:ByteArray = new ByteArray();
tmp.writeObject(b1);
tmp.position = 0;
var b2:* = tmp.readObject();
trace(b2 is MyByteArray); // prints false
trace(b2 is ByteArray); // prints true
, ...
이 사람이 나를 설명 할 수 복제 된 객체가 MyByteArray의 인스턴스가 아닌 이유는 무엇입니까?고마워요!
아니요, tmp는 ByteArray 유형이어야합니다. 이것은 AS3에서 객체를 복제하는 일반적인 방법으로 ObjectUtil.copy()로 구현됩니다. tmp.writeObject()는 MyByteArray의 필드를 저장하지 않으므로 유형 변환이 도움이되지 않습니다 (이 최소한의 예제에서는 MyByteArray에 필드가 없지만 응용 프로그램에 있음). 이상하게도 MyByteArray가 ByteArray를 확장하지 않으면 모든 것이 정상적으로 작동합니다. 즉, b2는 복제 후 MyByteArray 유형입니다. – bartekb