Отвечая на исходный вопрос и вопрос, заданный в комментарии:
Звездочка - это подстановочный знак, который означает, что переменная будет принимать информацию любого типа.Пример:
var wildcard:*;
wildcard = "hello";
wildcard = 10;
wildcard = new MovieClip();
Все вышеперечисленное будет работать.
Переменные должны вводиться как можно более строго;Я имею в виду, что когда вы хотите назначить MovieClip переменной, ваша переменная должна быть напечатана как MovieClip.Вот так:
var mc:MovieClip = new MovieClip();
Это работает для всего.Если вы создаете свой собственный класс, то используйте его как тип для переменной, содержащей ваш класс.
var thing:MyClass = new MyClass();
Будет выдана ошибка, если вы попытаетесь присвоить переменный несвязанный тип, например, так:
var thing:MovieClip = "hello";
Но пока ваш тип переменной находится где-то в цепочке наследования того, что вы ему назначаете, он будет работать.
var thing:DisplayObject = new MovieClip();
Это может быть удобно, еслиВы хотите перебрать массив, содержащий ассортимент ваших собственных классов, расширяющих MovieClip.
var ar:Array = [];
/**
* MyClass extends MovieClip
* MyOtherClass extends MovieClip
*/
ar.push(new MyClass());
ar.push(new MovieClip());
ar.push(new MyOtherClass());
var i:MovieClip;
for each(i in ar)
{
trace(i);
}
В целом, подстановочный тип не рекомендуется.В худшем случае используйте Object
, так как все во флэш-памяти расширяет это.Одна из ситуаций, когда подстановочный знак или объект могут быть полезны, - это если вы хотите создать функцию, которая может принимать данные любого типа.Вот так:
var myarray:Array = [];
function addToArray(data:Object):void
{
myarray[myarray.length] = data;
trace(data);
}
ИЛИ
function addToArray(data:*):void
{
myarray[myarray.length] = data;
trace(data);
}
Надеюсь, все это имеет смысл.