ActionScript 3 Ошибка 1130

Файл: "point_direction.as"


    package {   
        public class point_direction {

            var radianAngle:Number;
            var degreeAngle:Number;

            public function point_direction(x1:Number, y1:Number, x2:Number, y2:Number) : Number {
                radianAngle = Math.atan2(y1 - y2, x1 - x2);
                degreeAngle = radianAngle * 180 / Math.PI();

                return degreeAngle;
            }
        }
    }

Выше находится файл, который мне не удается исправить. Я хотел бы, чтобы файл возвращал окончательный расчетный угол в градусах, когда он будет готов, но он выдает эту ошибку.

Line 7, 1130: A constructor cannot specify a return type.

person Joban    schedule 14.08.2012    source источник
comment
Вы должны принять ответ, если ваша проблема решена.   -  person BadFeelingAboutThis    schedule 20.08.2012


Ответы (3)


Ваша ошибка соответствует ожиданиям. Конструктор - это метод создания класса, поэтому он возвращает экземпляр этого класса - добавление любого типа возвращаемого значения, кроме void, вызовет эту ошибку.

Похоже, вы хотите сделать эту функцию статической? если да, то вот как будет выглядеть ваш пакет (при условии, что все, что он делает, это эта функция):

package {   
    public class point_direction {

        public static function pointDirection(x1:Number, y1:Number, x2:Number, y2:Number):Number {
            var radianAngle = Math.atan2(y1 - y2, x1 - x2);
            var degreeAngle = radianAngle * 180 / Math.PI();

            return degreeAngle;
        }
    }
}

вы получите доступ к нему, позвонив point_direction.pointDirection(x1,y1,x2,y2)

person BadFeelingAboutThis    schedule 14.08.2012

Если вы хотите, чтобы экземпляр класса point_direction представлял degreeAngle, вы можете сделать это:

package
{
    public class point_direction
    {

        private var _radianAngle:Number;
        private var _degreeAngle:Number;


        public function point_direction(x1:Number, y1:Number, x2:Number, y2:Number)
        {
            _radianAngle = Math.atan2(y1 - y2, x1 - x2);
            _degreeAngle = radianAngle * 180 / Math.PI();
        }


        public function get degreeAngle():Number
        {
            return _degreeAngle;
        }
    }
}

Обратите внимание, что конструктор ничего не возвращает (потому что конструктор не может этого сделать).

Вместо этого вы сделаете это:

var dir:point_direction = new point_direction(0, 1, 2, 3);
trace(dir.degreeAngle);
person Marty    schedule 15.08.2012

Здесь нужно быть осторожным. Метод конструктора класса не должен возвращать значение, поскольку он фактически возвращает сам себя. Это объясняет, почему вы получили это сообщение об ошибке.

Поэтому выберите другое имя функции, см. Следующий пример

Public function calculate_point_dirction(x1:Number, ...):Number
{
 // do staff
 Return degreeAngle;
 }
person Future2020    schedule 14.08.2012
comment
Переименование функции помогло, затем мне пришлось изменить ее на статическую, чтобы использовать ее так, как я задумал. - person Joban; 15.08.2012
comment
Счастливо, что ты справился :) Тогда получи ответ;) - person Future2020; 15.08.2012