![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1.3 20.07.10]
Регистрация: Jul 2010
Сообщений: 24
|
Выдает 1067: Implicit coercion of a value of type Boolean to an unrelated type Number.
if (up) {
speed+=power && speed < maxSpeed;
}
if (down) {
speed-=power && speed < maxDownSpeed;
//speed = -1;
}
Как только дописал && speed < maxDownSpeed выводится ошибка. Что за ошибка? И если проблема в действиями над числами то какой знак нужно поставить чтобы при up символ разгонялся до 10. и не больше. при down скорость снижалась до -1? Добавлено через 2 минуты Ответте плз. в математике еще нубее. |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 461
|
Попробуй так:
Последний раз редактировалось Tr1te; 20.07.2010 в 15:10. |
|
|||||
|
[+1.3 20.07.10]
Регистрация: Jul 2010
Сообщений: 24
|
обьект останавливается и при нажатой down продолжает движение вперед. Назад так и не двигается
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
наверное, имеет смысл выложить немного больше кода
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1.3 20.07.10]
Регистрация: Jul 2010
Сообщений: 24
|
// Типа boolean var up:Boolean=false; var down:Boolean=false; var left:Boolean=false; var right:Boolean=false; var brake:Boolean=false; // Клавиша нажата stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down); function key_Down(e:KeyboardEvent):void { if (e.keyCode==38) { up=true; } if (e.keyCode==40) { down=true; } if (e.keyCode==37) { left=true; } if (e.keyCode==39) { right=true; } if (e.keyCode==32) { brake=true; } } // Клавиша отпушена stage.addEventListener(KeyboardEvent.KEY_UP, key_Up); function key_Up(e:KeyboardEvent):void { if (e.keyCode==38) { up=false; } if (e.keyCode==40) { down=false; } if (e.keyCode==37) { left=false; } if (e.keyCode==39) { right=false; } if (e.keyCode==32) { brake=false; } } addEventListener(Event.ENTER_FRAME, movieCar); // Переменные var power:Number=0.3; var friction:Number=0.95; var braking:Number=0.85;// тормоз var deceleration:Number=0.87; var speed:Number=0; var maxSpeed:Number=10; var maxDownSpeed:Number=1; var gradusRot:Number=2.4; var gradus:Number=0; var radian:Number; var speedX:Number; var speedY:Number; function movieCar(e:Event):void { if (up) { speed+=power&&speed<maxSpeed; } if (down) { speed-=power; //speed = -1; } if ((left) && (up) || (left) && (down)) { gradus-=gradusRot; } if ((right) && (up) || (right) && (down)) { gradus+=gradusRot; } if (brake) { speed*=braking; } radian = (gradus * Math.PI)/180; speedX=speed*Math.cos(radian); speedY=speed*Math.sin(radian); MyCar.rotation=gradus; MyCar.x+=speedX; MyCar.y+=speedY; var MyCarW:Number=MyCar.width/2; var MyCarH:Number=MyCar.height/2; /*координаты сцены + половину ширины или высоты обьекта*/ if (MyCar.x>550+MyCarW) { MyCar.x = 0 - (MyCarW); } if (MyCar.x < 0 -(MyCarW)) { MyCar.x=550+MyCarW; } if (MyCar.y>600+MyCarH) { MyCar.y = 0 - (MyCarH); } if (MyCar.y < 0 -(MyCarH)) { MyCar.y=600+MyCarH; } } Проблемы: нет предела скорости при нажатой down. поворот возможен только при нажатой up. Не знаю как зделать возможность поворачивать когда скорость выше (не знаю даже чего) Добавлено через 4 минуты ошибка выдается Добавлено через 7 минут что означают операторы в твоем коде? не могу понять. весь день бошку ломаю. разясни плз Последний раз редактировалось udaaff; 20.07.2010 в 16:57. |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 461
|
Предел максимальной скорости так надо:
var maxSpeed:int=10; if (up) { if(speed<maxSpeed){ speed+=power; }else{ speed=maxSpeed; } } var minSpeed:int=1; if (down) { if(speed>minSpeed){ speed-=power; }else{ speed=minSpeed; } } |
|
|||||
|
[+1.3 20.07.10]
Регистрация: Jul 2010
Сообщений: 24
|
+ движение вперед, - назад. он и нужен кажись.
Цитата:
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 461
|
Ну потому что у тебя нижняя скорость не -1, а 1, по этому ты продолжаешь двигаться вперед. А ошибка из-за того что ты не правильный синтаксис выдал, сделай по аналогии как в верхнем посту. Тольуо минимальную скорость поставь -1.
|
|
|||||
|
[+1.3 20.07.10]
Регистрация: Jul 2010
Сообщений: 24
|
да говорю же. максимальная скорость движения вперед - maxSpeed,
а движения назад - maxDownSpeed. при твоем коде. ни чего не изменяется. сивол так и движется вперед но уже с maxDownSpeed, чему бы не было равно Добавлено через 54 секунды и тип инт не чего не изменит. та ведь целые числа. поэтому скорость лиш становится рывком. а чтобы было плавно я взял Number Добавлено через 21 минуту Да спасибо все работает как надо. можеш еше подсказать как вывести скорость. trace выводит много чисел. если в динамическое будет тоже дофига чисел. как зделать чтобы они обновлялись а лучше чтоб можно было связать с стрелкой |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|