Тип отливка в ActionScript 3
Object(instanceOfOtherObject);
Работы на основе valueOf имущества данного класса (если она определена). Таким образом, вы можете определить класс MyClass как таковые:
package {
public class MyClass {
private var myArray:Array;
public function MyClass(inputArray:Array = null) {
myArray = (inputArray ? inputArray : new Array());
}
public function valueOf():Array {
return myArray;
}
}
}
Тогда вы будете в состоянии выполнить эти типажи:
var mc:myClass = new MyClass();
var arr:Array = Array(myClass);
Насколько мне известно, обратный не вариант, так как функция valueOf из Массив не возвращает объект типа MyClass. Нет ничего, что помешает вам создать CastableArray, который расширяет и отменяет функцию valueOf от Array, чтобы вернуть экземпляр MyClass с использованием указанного выше конструктора, хотя вы можете столкнуться с другими проблемами с другими основными языковыми компонентами, которые ожидают, что Array будет возвращает Array в свой valueOf свойство (сравнение объектов приходит на ум).
Я не сделал никакого конкретного тестирования с этим следующим предложением, но если MyClass выходит из массива и не определяет функцию valueOf, все же возможно сделать преобразование типа в зависимости от конструктора MyClass и того, что делает Flash в обстоятельствах, когда valueOf не определен.
Очень информативно :) Спасибо! Я решил свою проблему, расширив прототип массива, чтобы включить 'Array.prototype.asMyClass = function(): MyClass {}'. Это позволяет мне взять любой массив и вызвать 'theArray.AsMyClass()', и он работает так же хорошо, как я могу попросить. –
Это умное решение. Рад, что это было по крайней мере для некоторых целей, помните о подводных камнях об перечислении, как это определено в этой статье: http://tobyho.com/Modifying_Core_Types_in_ActionScript_3_Using_the_Prototype_Object – Aaron