Просмотр полной версии : Идентификация объекта ByteArray
Формально ByteArray является наследником Object-a. Вот только обращения к свойствам и методам байтэррея определенным в Object приводят либо к ошибке, либо возвращают false/null ( в том числе применение is/as ). То есть можно, конечно, обратиться к свойству объекта bytesAvailable и try/catch перехватить ошибку ( если это окажется не byte array), но это ужасный выход.
Отсюда два вопроса:
С какой целью методы объекта переопределены в его наследнике ( ваша версия )?
Как, всё же, корректно идентифицировать ByteArray?
Приведите пример ошибки.
var ba:ByteArray = new ByteArray();
trace(ba is ByteArray); // true
trace((ba as ByteArray).bytesAvailable); // 0
Сори, неправильно формулировал
trace( "bytes: " + bytes is ByteArray ); //false
trace( "bytes: " + ( bytes is ByteArray ) ); //bytes: true
ещё можно определить тип через функции getQualifiedClassName, getQualifiedSuperclassName
правда в контексте программы мне это не удобно, т.к. мне сначала нужно выяснить наличие некого свойства в объекте через hasOwnProperty(), а байтэрей возрващает ошибку обращения :(
Deimos747
23.09.2012, 16:04
trace( "bytes: " + bytes is ByteArray ); //false
trace( "bytes: " + ( bytes is ByteArray ) ); //bytes: true
false в первом случае, потому что сначала выполнится сложение, а уже потом проверка. Результатом конкатенации будет String
artcraft
23.09.2012, 16:13
trace( "bytes:", bytes is ByteArray ); //bytes: true
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.