неопределенный метод в объекте? - PullRequest
0 голосов
/ 30 января 2011

Я получаю сообщение об ошибке, когда хочу скомпилировать следующий код ...

Я получаю неопределенный метод при попытке установить переменную с помощью класса Filters ..

trace(filters.txt()); // returns undefined method

trace(filters); // returns [object Filters]

но я использую этот же объект в других скриптах без проблем?

package player {
    import flash.display.Sprite;

    import filters.Filters;

    public class Time_bar extends Sprite {
        private var bar = null;

        public var color = null;
        public var _w = 0;
        public var _h = 0;
        public var _x = 0;
        public var _y = 0;

        public function Time_bar(){
            this.bar = new Sprite();
            addChild(this.bar);
        }

        public function cnstr(){
            this.bar.graphics.beginFill('0x'+this.color);
            this.bar.graphics.drawRect(0, 0, this._w, this._h);
            this.bar.graphics.endFill();
            this.bar.x = this._x;
            this.bar.y = this._y;
            this.bar.alpha = 0.75;
            this.bar.scaleX = 0;

            var filters = new Filters();
            trace(filters);
            trace(filters.txt());
            //filters.txt(this.bar);
        }

        public function progress(float){
            this.bar.scaleX = float;
        }
    }
}

класс Filters выглядит так:

package filters {
    import flash.display.Sprite;

    import filters.Filters_glow;

    public class Filters extends Sprite {
        private var Glow = new Filters_glow();

        public function txt(instance){
            Glow.color = '93fafe';

            instance.filters = [Glow.filter()];
        }

        public function loader(instance){
            Glow.color = '93fafe';
            Glow.alpha = 0.5;

            instance.filters = [Glow.filter()];
        }
    }
}

Filter_glow:

package filters {
    import flash.filters.GlowFilter;

    public class Filters_glow {
        public var color = '000000';
        public var alpha = 0.25; // range: 0-1
        public var blurX = 4; // range: 0-255; optimized values: 2,4,8,16 etc
        public var blurY = 4; // range: 0-255; optimized values: 2,4,8,16 etc
        public var strength = 1; // range: 0-255
        public var quality = 3; // range: 0-15
        public var inner = false;
        public var knockout = false;

        public function filter(){
            this.color = '0x'+this.color;

            return new GlowFilter(this.color, this.alpha, this.blurX, this.blurY, this.strength, this.quality, this.inner, this.knockout);
        }
    }
}

Ответы [ 4 ]

1 голос
/ 30 января 2011
var _filters = new Filters();
_filters.txt(this.bar);

явно фильтры - зарезервированное имя свойства .. после изменения фильтров на _filters ошибка исчезла:)

0 голосов
/ 30 января 2011

Ошибка отчетливо видна. Вы не передаете единственный обязательный аргумент функции txt.

public function txt(instance){
            Glow.color = '93fafe';

            instance.filters = [Glow.filter()];
        }

Таким образом, вы можете вызвать функцию txt, только передав ей экземпляр. что-то вроде:

trace(filters.txt(YourObject));

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

0 голосов
/ 30 января 2011

попробуйте изменить ваш код следующим образом, это может помочь с ошибкой:

 //...
public class Filters extends Sprite {
private var Glow: Filters_glow;
    public function Filters(){
        Glow = new Filters_glow();
    }
    public function txt(instance: DisplayObject = null): Boolean{
        if(!instance){
            return false;
        }
        Glow.color = '93fafe';

        instance.filters = [Glow.filter()];
        return true;
    }
//...
0 голосов
/ 30 января 2011

Чтобы проверить, существует ли метод "txt" в объекте фильтров, вам нужно написать trace(filters.txt);. Вместо этого вы выполняете txt-метод с отсутствующим параметром, добавляя скобки. И во время выполнения он пытается получить доступ к instance, который не определен. Я согласен с Матти, что в сообщении об ошибке должно быть сказано что-то еще.

Что касается того, почему filters.txt(this.bar); не работает, я подозреваю, что проблема кроется в другом месте, вы можете включить вызывающий код и класс Filters_glow?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...