Переменная типа звездочка - PullRequest
0 голосов
/ 16 мая 2011
var test:*;
test = sMC // Some movieClip exported for ActionScript
var f = new test;

Извините, если вопрос немного неубедительный, но я начинаю задумываться, что означает эта звездочка и фрагмент?

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Отвечая на исходный вопрос и вопрос, заданный в комментарии:

Звездочка - это подстановочный знак, который означает, что переменная будет принимать информацию любого типа.Пример:

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);
}

Надеюсь, все это имеет смысл.

0 голосов
/ 16 мая 2011

Звездочка означает, что тип переменной не определен или подстановочный знак. Это означает, что вы можете определить test как любую переменную.

...