Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   new ColorTransform() (http://www.flasher.ru/forum/showthread.php?t=187109)

Shaak 13.11.2012 19:14

new ColorTransform()
 
Здравствуйте, столкнулся с проблемой - не могу передать параметры в ColorTransform с помощью массива данных.

Код AS3:

                private function initColorTransforms():void {
                        colorTransforms.push([1,1,1,0,0,0,0,0]);
                        colorTransforms.push([1,1,1,1,0,0,0,0]);
                        colorTransforms.push([1,1,1,1,0,0,0,0]);
                }


Код AS3:

                private function hexColorChange(obj:Object, newcolor:int):void {
                        trace(newcolor);
                obj.transform.colorTransform = new ColorTransform(colorTransforms[newcolor]);
                trace(colorTransforms[newcolor]);
                }

Все запускается, компилируется как надо, трейсами
Код AS3:

trace(colorTransforms[newcolor])

выводит нужную строку данных, но ColorTransform() не распознает эти данные, кто может подсказать, как передать в ColorTransform() 8 параметров одной переменной?

zuxul 13.11.2012 20:26

Наверное, только как-то так:
Код AS3:

function create(_class:Class, args:Array):* {
  switch (args.length) {
    case 0: return new _class();
    case 1: return new _class(args[0]);
    ...
    case 8: return new _class(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
  }
}
 
var ct:ColorTransform = create(ColorTransform, array);

Но я совсем не советую пользоваться такой функцией. Лучше и понятней будет написать:
Код AS3:

new ColorTransform(array[0], array[1], ..., array[7])


Sintesis 13.11.2012 21:06

Почему не передать массив в функцию hexColorChange?
Код AS3:

private function hexColorChange(obj:Object, newcolor:Array):void {
                        trace(newcolor);
                      obj.transform.colorTransform = new ColorTransform(newcolor[0], newcolor[1], newcolor[2],...);
 
                }


Shaak 13.11.2012 21:19

Цитата:

Сообщение от zuxul (Сообщение 1104228)
Наверное, только как-то так:
Код AS3:

function create(_class:Class, args:Array):* {
  switch (args.length) {
    case 0: return new _class();
    case 1: return new _class(args[0]);
    ...
    case 8: return new _class(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
  }
}
 
var ct:ColorTransform = create(ColorTransform, array);

Но я совсем не советую пользоваться такой функцией. Лучше и понятней будет написать:
Код AS3:

new ColorTransform(array[0], array[1], ..., array[7])


ясно, спасибо :) значит не буду пудрить себе мозги, так и поступлю


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

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