![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Здравствуйте, понадобилось добавить классу Point ряд методов линейной алгебры. Вот только код не компилится, пишет что fd не определена.
public class pVector extends Point { public function pVector(x:Number,y:Number):void { super(x,y); } public function pAdd( v:pVector ):void{ x += v.x; y += v.y; } public function pMulNum( i:Number ):void{ x *= i; y *= i; } } |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Не объявил переменную и пытался, что то с ней сделать. Прошу прощенья, видимо PHP иссушил мозг.
![]() Теперь споткнулся вот об это: Похоже localToGlobal() ругается на не соответствие типов данных. Видимо придется делать методы pVector статическими. ![]() Последний раз редактировалось PlutDem; 19.02.2012 в 21:50. |
|
|||||
|
Там не localToGlobal ругается, а оператор "=", на то что обычную точку присваиваете переменной с objCenterPoint.
Там нужно возвращаемую localToGlobal точку как-то преобразовать в точку типа pVector. Один из вариантов (может не адекватный вашим задачам, но для примера сойдёт): public static function fromPoint(point:Point):pVector { return new pVector(point.x, point.y); } var objCenterPoint:pVector; objCenterPoint = pVector.fromPoint(obj.localToGlobal(new pVector(33, 53))); Если Вы _не_ навешивате дополнительных полей на точку, а только хотите добавить несколько методов - лучше действительно не делать подклассов. А просто сделать кучу функций, принимающих обычные точки и работающих с ними (эти функции можно реализовать как статические в каком-нибудь классе или как отдельные, лежащие в пакете). Потому что иначе придется создавать объекты своего типа, когда те же операции можно делать и с просто Point. Последний раз редактировалось expl; 20.02.2012 в 01:26. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Вот еще одна дилемма:
// В функцию нужно передать сумму векторов не изменяя их значения, однако в этом случае //к вектору v1 навсегда прибавится v2 somefunction( pVector.summ(v1,v2) ); public static function summ( v1:Point,v2:Point ):Point{ pX = v1.x + v2.x; pY = v1.y + v2.y; return new Point(pX,pY) } //Но в этом случае придется писать довольно длинно v1= pVector.summ(v1,v2) //вместо короткого pVector.summ(v1,v2) В общем, хотелось бы узнать как все грамотно сделать. Последний раз редактировалось PlutDem; 02.03.2012 в 00:24. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
У Вас ни одно предложение не согласуется с другим. Функции имеют разные имена в примерах. Написано что ничего не возвращает, но завершается return'ом, написано "не хочу менять v1 и тут же пример v1 = ... Нельзя ли чуточку поуважительней? Тут не телепаты.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
Цитата:
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 212
|
ChuwY
Посмотрел Vector3D и решил, что используя Point, занимаюсь велосипедоводством и экономией на спичках ![]() Но опять же, как при вызове функции сохранить исходное значение v1? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Посмотреть мало, надо прочитать.
Цитата:
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|