Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Зачем нужен кастинг ? (http://www.flasher.ru/forum/showthread.php?t=123853)

Smrad 14.04.2009 15:08

Цитата:

Сообщение от __etc (Сообщение 812686)
Не каждый Object есть TextField.

Это понятно.

Я вот просто тут сижу и медитирую на вот такой вот код:
Код AS3:

for ( j = 0; j < BUILDINGS_OBJECTS.numChildren; j++ ) {                                        
        if ( BUILDINGS_OBJECTS.getChildAt( j ) is house1 && ALLAY_WEAPONS_OBJECTS.getChildAt( i ).hitTestObject( BUILDINGS_OBJECTS.getChildAt( j ) ) ) {                                               
                _rocket = ALLAY_WEAPONS_OBJECTS.getChildAt( i ) as rocket;
                if ( !_rocket.explosion ) {
                        _rocket.explosion = ConstAttributes.FRAME_GROUND_BLAST;
                        _house1 = BUILDINGS_OBJECTS.getChildAt( j ) as house1;
                        _house1.destruction = ConstAttributes.WEAPONS_BOMB_DAMAGE;
                }
        }else if ( BUILDINGS_OBJECTS.getChildAt( j ) is house2 && ALLAY_WEAPONS_OBJECTS.getChildAt( i ).hitTestObject( BUILDINGS_OBJECTS.getChildAt( j ) ) ) {                                                       
                _rocket = ALLAY_WEAPONS_OBJECTS.getChildAt( i ) as rocket;
                if ( !_rocket.explosion ) {
                        _rocket.explosion = ConstAttributes.FRAME_GROUND_BLAST;
                        _house2 = BUILDINGS_OBJECTS.getChildAt( j ) as house2;
                        _house2.destruction = ConstAttributes.WEAPONS_BOMB_DAMAGE;
                }
        }else if ( BUILDINGS_OBJECTS.getChildAt( j ) is house3 && ALLAY_WEAPONS_OBJECTS.getChildAt( i ).hitTestObject( BUILDINGS_OBJECTS.getChildAt( j ) ) ) {                                               
                _rocket = ALLAY_WEAPONS_OBJECTS.getChildAt( i ) as rocket;
                if ( !_rocket.explosion ) {
                        _rocket.explosion = ConstAttributes.FRAME_GROUND_BLAST;
                        _house3 = BUILDINGS_OBJECTS.getChildAt( j ) as house3;
                        _house3.destruction = ConstAttributes.WEAPONS_BOMB_DAMAGE;
                }
        }else if ( BUILDINGS_OBJECTS.getChildAt( j ) is runway ) {
                old_point = new Point( ALLAY_WEAPONS_OBJECTS.getChildAt(i).x, ALLAY_WEAPONS_OBJECTS.getChildAt(i).y );
                new_point = BUILDINGS_OBJECTS.localToGlobal( old_point );
                if ( runway( BUILDINGS_OBJECTS.getChildAt(j) ).getTestClip().hitTestPoint( new_point.x, new_point.y, true ) ) {       
                        _rocket = ALLAY_WEAPONS_OBJECTS.getChildAt( i ) as rocket;
                        if ( !_rocket.explosion ) {
                                _rocket.explosion = ConstAttributes.FRAME_GROUND_BLAST;
                                _runway = BUILDINGS_OBJECTS.getChildAt( j ) as runway;
                                _runway.destruction = ConstAttributes.WEAPONS_BOMB_DAMAGE;
                        }
                }                                       
        }                                       
}

а мне его ещё модифицировать.
Моя бы воля, as и особенно is из языка выкинул бы.

etc 14.04.2009 15:12

Smrad, этот код ужасен сам по себе и вовсе не из-за is и as.

iNils 14.04.2009 15:17

Smrad, давайте избыточную табуляцию вы сами будете убирать, а не модераторы?

Smrad 14.04.2009 15:20

Цитата:

Сообщение от iNils (Сообщение 812697)
Smrad, давайте избыточную табуляцию вы сами будете убирать, а не модераторы?

ok. Просто скопипастил не посмотрев.

Добавлено через 17 минут
Цитата:

Сообщение от __etc (Сообщение 812696)
Smrad, этот код ужасен сам по себе и вовсе не из-за is и as.

Согласен, но is и as позволили это написать, и что ещё ужаснее, это работает.

DarkLight 14.04.2009 16:41

Цитата:

Согласен, но is и as позволили это написать
а не было бы - код был бы еще страшнее

Psycho Tiger 14.04.2009 17:35

А что вы предлагаете вместо is?
Как обьяснить машине, что мы только что загрузили? Байтовый массив или сразу жпг картинку?

Smrad 14.04.2009 18:07

Я, видимо, не совсем правильно объяснил свою позицию.
Поинт был в том, что даункасты чаще всего идут парой с полем типа.
А is - это почти оно и есть, особенно в неопытных руках.


Часовой пояс GMT +4, время: 14:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.