Показать сообщение отдельно
Старый 28.01.2017, 16:34
zackscript вне форума Посмотреть профиль Отправить личное сообщение для zackscript Найти все сообщения от zackscript
  № 1  
Ответить с цитированием
zackscript
 
Аватар для zackscript

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
По умолчанию Помогите понять строчку кода

Привет всем, я тысячакратно извиняюсь за тупой вопрос.
Ребят скажите как понять приведение типа такого характера:

Код AS3:
p = pool.getObject() as Point;
Дабы больше разъяснить, выкладываю весь код с одного сайта (возможно некоторые побывали там )):
Код AS3:
public final class ObjectPool
{
    private var pool:Vector.<Object>;
    private var counter:uint;
    private var className:Class;
 
    public function ObjectPool(className:Class, length:uint = 1)
    {
        this.className = className;
        pool = new Vector.<Object>(length);
 
        var i:uint = counter = length;
        //создадим начальный набор объектов
        while( --i > -1 )
            pool[i] = new className();
    }
 
    public function getObject():Object
    {
        if ( counter > 0 )
            return pool[ --counter ];
        // если объекты закончились
        // создаю объект и увеличивая длину массива
        pool.unshift( new className() );
        return pool[0];
    }
 
    public function releaseObject(value:Object):void
    {
        pool[ counter++ ] = value;
    }
 
    // необязательный метод для тестирования
    public function toString():String
    {
        return "Pool of " + className + " count = " + counter + "/" + pool.length;
    }
}
Здесь автор использует объект с непонятным мне приведением типа:

Код AS3:
var pool:ObjectPool = new ObjectPool(Point, 20);
trace(pool);
trace("---------");
for (var i:int = 0, p:Point; i < 40; i++)
{
    p = pool.getObject() as Point; // как здесь это работает ???
    p.x = Math.random() * 400;
    if(p.x > 300)
        pool.releaseObject(p);
    trace( pool.toString() );
}
Если я непонятно изложил свою проблему, попробую написать так:

ОбъектНекоегоКласса.какой-тоМетод () as Какой-тоТип; // вот как это работает ?

или же:
var _bit_map:Bitmap = _loader.content as Bitmap; // ?