Форум 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=208860)

neonoviiwolf 10.09.2014 19:05

сравнение классов
 
вопрос, а можно в операторе if сравнивать классы, то есть функция делает для разных классов одно и тоже, разница лишь в параметрах (изменяются координаты в моём случаи), вот и думаю, вместо того, что бы писать две функции, может одну написать, которая будет действовать по разному, в зависимости с каким классом ей необходимо работать.

gloomyBrain 10.09.2014 19:33

Если я правильно Вас понял, то Вам нужно:

1) Написать общий интерфейс для Ваших классов
Код AS3:

public interface IThing
{
    function doSomething():void;
}

2) Реализовать этот интерфейс в каждом из классов
Код AS3:

public class ThingA implements IThing
{
    public function doSomething():void
    {
        trace("Hello, I'm A!");
    }
}

Код AS3:

public class ThingB implements IThing
{
    public function doSomething():void
    {
        trace("Hello, I'm B!");
    }
}

3) В месте, где нужно использовать разные классы, указать общий интерфейс, а не конкретный класс
Код AS3:

public function useSomething(objective:IThing):void
{
    objective.doSomething();
}

Видите, в метод useSomething можно передать и ThingA, и ThingB, и для метода нет разницы между ними. А то что Вы хотели делать в блоке if теперь можно реализовать в каждом из классов, в методе doSomething.

neonoviiwolf 10.09.2014 19:36

ok, спасиб, попробую поэкспериментировать

nubideus 10.09.2014 20:37

Код AS3:

var a:uint = 1;
var b:String = "-2";
 
function c(d:*):Boolean{
  if (d is int) return d > 0;
  else if (d is String) return int(d) > 0;
  return false;
}
 
trace(c(a)); // true
trace(c(b)); // false
 
trace(uint(1) is Number); // true
trace(typeof uint(1)); // number


caseyryan 10.09.2014 20:39

Если они все дисплей объекты, то в этом случае можно еще создать для них всех базовый класс, расширяющий Sprite или MovieClip, создать в нем необходимый метод, а в потомках перезаписывать его и добавлять функционал специфичный для конкретного потомка. В этом случае интерфейс будет не нужен


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

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