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

Шурик_2 27.08.2011 09:39

Почему конфликтуют имена?
 
Конвертёр цвета из строковой переменной в HEX для градиента
Код AS3:

var LEDcolor:String = "red";
switch (LEDcolor)
{
6        case "red" :
7                var colors:Array = [0xFFFFFF,0xCC3300];
8                break;
9        case "green" :
10                var colors:Array = [0xFFFFFF,0xCC3300];
11                break;
12        case "blue" :
13                var colors:Array = [0xFFFFFF,0xCC3300];
14                break;
15        default :
16                trace("color error");
17                break;
}

ошибки "выскакивают" во время воспроизведения
Compiler errors:
Scene 1, Layer 'Layer 1', Frame 1, Line 10 1151: A conflict exists with definition colors in namespace internal.
Scene 1, Layer 'Layer 1', Frame 1, Line 13 1151: A conflict exists with definition colors in namespace internal.

-De- 27.08.2011 10:09

Потому что в as3 локальная переменная видна во всей функции.

Шурик_2 27.08.2011 10:39

Цитата:

Сообщение от -De- (Сообщение 1025947)
Потому что в as3 локальная переменная видна во всей функции.

Это и так ясно. Тут же условие с выбором! Как тогда мне присвоить нужное значение переменной.

Добавлено через 2 минуты
всё, понял в чём моя ошибка... я заново регистрирую переменную ключевым словом var

ТЕМА ЗАКРЫТА

Wolsh 27.08.2011 10:49

Создайте переменную перед switch и присваивайте ей значения в кейсах. Нельзя создавать три разных переменных с одним именем. Даже в блоке условий.

wvxvw 27.08.2011 14:55

А еще лучше - не используйте switch для этого:
Код AS3:

var colors:Object =
{
        red: [0xFFFFFF, 0xCC3300],
        green: [0xFFFFFF, 0xCC3300],
        blue: [0xFFFFFF, 0xCC3300]
};
var color:Array = colors["red"];


Шурик_2 28.08.2011 14:09

wvxvw, в общем отличный подход!
Только не понятно как пользователю задать параметр цвета? Вопрос в инкапсуляции. В моём алгоритме проверяется заданное пользователем значение свойства LEDcolor, а switch вставляет нужные данные в массив.

in4core 28.08.2011 17:41

Цитата:

Только не понятно как пользователю задать параметр цвета?
Как как...ручками

Код AS3:

function set color(c:String):void {
 
    var colors:Object =
    {
        red: [0xFFFFFF, 0xCC3300],
        green: [0xFFFFFF, 0xCC3300],
        blue: [0xFFFFFF, 0xCC3300]
      };
      var co:Array = colors[c];
}


Silicium 28.08.2011 18:03

Можно извратиться и написать... Enumerator)))

Шурик_2 29.08.2011 01:50

Цитата:

Сообщение от in4core (Сообщение 1026236)
Как как...ручками

Код AS3:

function set color(c:String):void {
 
    var colors:Object =
    {
        red: [0xFFFFFF, 0xCC3300],
        green: [0xFFFFFF, 0xCC3300],
        blue: [0xFFFFFF, 0xCC3300]
      };
      var co:Array = colors[c];
}


Где эти правила синтаксиса можно увидеть? Дайте, плиз, ссылочку на источник и номер страницы, хочу выучить.

КорДум 29.08.2011 02:04

http://help.adobe.com/ru_RU/FlashPla...x-Symbols.html
Здесь. И у Мука основы.


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

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