![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2015
Сообщений: 4
|
Я не очень давно изучаю АС... И совсем не могу понять, откуда такая ошибка ) (прикрепил файл с кодом в раре)
|
|
|||||
|
Регистрация: Oct 2015
Сообщений: 4
|
//игра неоновый пинпонг import flash.events.KeyboardEvent; import flash.events.Event; import flash.events.MouseEvent; var up:Boolean = false; var down:Boolean = false; var left:Boolean = false; var right:Boolean = false; var nadpis1 = new win1 (); var nadpis2 = new win2 (); var goal1 = 0; var goal2 = 0; var soundOn = true; var board = {}; board.clip = board1; board.speed = 3; board.w = board.clip.width; board.h = board.clip.height; var pc = {}; pc.clip = board2; pc.speed = 3; pc.w = pc.clip.width; pc.h = pc.clip.height; var ball1 = {}; ball1.clip = ball; ball1.radius = ball.clip.width/2; ball1.speed = 3; ball1.xmov = ball.speed; ball1.ymov = 2 + Math.random()*2; ball1.live = true; stage.addEventListener(KeyboardEvent.KEY_DOWN, kd); stage.addEventListener(KeyboardEvent.KEY_UP, ku); function kd (e:KeyboardEvent) { //trace(e); if (e.keyCode==38) { up = true; } if (e.keyCode==40) { down = true; } } function ku (e:KeyboardEvent) { if (e.keyCode==38) { up = false; } if (e.keyCode==40) { down = false; } } //движение зеленой доски function board_player () { if (up) { if ((board.clip.y - board.h/2) > wall_up.y) { board.clip.y -= board.speed; if (board.clip.y - board.h/2 < wall_up.y) { board.clip.y = wall_up.y + board.h/2; } } } if (down) { if ((board.clip.y + board.h/2) < wall_down.y) { board.clip.y += board.speed; if (board.clip.y + board.h/2 > wall_down.y) { board.clip.y = wall_down.y - board.h/2; } } } } //считаем положение шара в движении function moveBalls () { ball.tempx = ball.clip.x + ball.xmov; ball.tempy = ball.clip.y + ball.ymov; } //доска с ИИ (красная) function board_pc () { if (ball.clip.y < pc.clip.y) { if ((pc.clip.y - pc.h/2) > wall_up.y) { pc.clip.y -= pc.speed; if (pc.clip.y - pc.h/2 < wall_up.y) { pc.clip.y = wall_up.y + pc.h/2; } } } if (ball.clip.y > pc.clip.y) { if ((pc.clip.y + pc.h/2) < wall_down.y) { pc.clip.y += pc.speed; if (pc.clip.y + pc.h/2 > wall_down.y) { pc.clip.y = wall_down.y - pc.h/2; } } } } //столкновение с полом и потолком function detection () { //столкновение с верхом if (ball.tempy - ball.radius < wall_up.y) { var yc = wall_up.y + ball.radius; var otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); var xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } //столкновение с низом if (ball.tempy + ball.radius > wall_down.y) { yc = wall_down.y - ball.radius; otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } //столкновение с правой верхней досочкой if (ball.tempy + ball.radius > wall1.y) { yc = wall1.y - ball.radius; otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } //столкновение с правой нижней досочкой if (ball.tempy + ball.radius > wall2.y) { yc = wall2.y - ball.radius; otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } //столкновение с левой верхней досочкой if (ball.tempy + ball.radius > wall3.y) { yc = wall3.y - ball.radius; otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } //столкновение с левой нижней досочкой if (ball.tempy + ball.radius > wall4.y) { yc = wall4.y - ball.radius; otn = (ball.tempy - yc)/(ball.tempy - ball.clip.y); xc = ball.tempx - otn*(ball.tempx - ball.clip.x); ball.tempx = xc; ball.tempy = yc; ball.ymov *= -1; } } function board_ball_detect () { //столкновение с доской игрока if (ball.tempx - ball.radius < board.clip.x + board.w/2) { if ((ball.clip.y <= board.clip.y + board.h/2 + ball.radius/2) && (ball.clip.y >= board.clip.y - board.h/2 - ball.radius/2) && ball.live) { var xc = board.clip.x + board.w/2 + ball.radius; var otn = (ball.tempx - xc)/(ball.tempx - ball.clip.x); var yc = ball.tempy - otn*(ball.tempy - ball.clip.y); ball.tempx = xc; ball.tempy = yc; ball.xmov *= -1; ball.xmov += 0.5; ball.ymov *= 1.1; pc.speed *= 1.09; board.speed *= 0.99; } else { ball.live = false; } } //столкновение с доской противника if (ball.tempx + ball.radius >= pc.clip.x - pc.w/2) { if ((ball.clip.y <= pc.clip.y + pc.h/2 + ball.radius/2) && (ball.clip.y >= pc.clip.y - pc.h/2 - ball.radius/2) && ball.live) { xc = pc.clip.x - pc.w/2 - ball.radius; otn = (ball.tempx - xc)/(ball.tempx - ball.clip.x); yc = ball.tempy - otn*(ball.tempy - ball.clip.y); ball.tempx = xc; ball.tempy = yc; ball.xmov *= -1; ball.xmov -= 0.5; ball.ymov *= 1.1; pc.speed *= 1.09; board.speed *= 0.99; } else { ball.live = false; } } } //рисуем шар function render () { ball.clip.x = ball.tempx; ball.clip.y = ball.tempy; } function ef (e:Event) { moveBalls (); board_player (); board_pc (); detection (); board_ball_detect (); render (); } Вот код =) |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Что такое board1 и board2? Я так понимаю, у Вас объекты просто находятся в кадре на сцене. Тогда по коду невозможно сказать, с каким из них проблемы.
И ошибка то где, в какой строке? Убедидесь, что всем объектам задан правильный Instance name.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Oct 2015
Сообщений: 4
|
В том-то и дело, что я не знаю в какой строке ) так-бы я сделал сам)
Доски это объекты. а вот насчет последнего... поищу, я мог такое сделать ) |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
Illiyaz,запускаешь в flash IDE? Попробуй запустить в режиме отладки ctrl+sfift+enter- увидишь где эксепшен бросается.
|
|
|||||
|
Регистрация: Apr 2014
Сообщений: 215
|
я смотрел,что то не увидел где у вас доска,есть мяч и поле,разметка на поле,у меня тоже ругнулся именно на доску,в коде есть, но код ругается на то что а где доска,найти не могу,может что то проглядел,может стоит посмотреть где она должна быть,добавить ее на сцену.....
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
у меня ругается на
|
|
|||||
|
Регистрация: Apr 2014
Сообщений: 215
|
хммм, ругается на код
ошибка -1120: Обращение несуществующего свойства wall. а где этот мувик wall? или что это |
|
|||||
|
Регистрация: Oct 2015
Сообщений: 4
|
обновленная версия... ошибок нет.. но.. не работает -,-
//игра неоновый пинпонг import flash.events.KeyboardEvent; import flash.events.Event; import flash.events.MouseEvent; var up:Boolean = false; var down:Boolean = false; var left:Boolean = false; var right:Boolean = false; var nadpis1 = new win1 (); var nadpis2 = new win2 (); var goal1 = 0; var goal2 = 0; var board = {}; board.clip = board1; board.speed = 3; board.w = board.clip.width; board.h = board.clip.height; var pc = {}; pc.clip = board2; pc.speed = 3; pc.w = pc.clip.width; pc.h = pc.clip.height; var ball1 = {}; ball1.clip = ball; ball1.radius = ball1.clip.width/2; ball1.speed = 3; ball1.xmov = ball1.speed; ball1.ymov = 2 + Math.random()*2; ball1.live = true; stage.addEventListener(KeyboardEvent.KEY_DOWN, kd); stage.addEventListener(KeyboardEvent.KEY_UP, ku); function kd (e:KeyboardEvent) { //trace(e); if (e.keyCode==38) { up = true; } if (e.keyCode==40) { down = true; } } function ku (e:KeyboardEvent) { if (e.keyCode==38) { up = false; } if (e.keyCode==40) { down = false; } } //движение зеленой доски function board_player () { if (up) { if ((board.clip.y - board.h/2) > wall_up.y) { board.clip.y -= board.speed; if (board.clip.y - board.h/2 < wall_up.y) { board.clip.y = wall_up.y + board.h/2; } } } if (down) { if ((board.clip.y + board.h/2) < wall_down.y) { board.clip.y += board.speed; if (board.clip.y + board.h/2 > wall_down.y) { board.clip.y = wall_down.y - board.h/2; } } } } //считаем положение шара в движении function moveBalls () { ball1.tempx = ball1.clip.x + ball1.xmov; ball1.tempy = ball1.clip.y + ball1.ymov; } //доска с ИИ (красная) function board_pc () { if (ball.clip.y < pc.clip.y) { if ((pc.clip.y - pc.h/2) > wall_up.y) { pc.clip.y -= pc.speed; if (pc.clip.y - pc.h/2 < wall_up.y) { pc.clip.y = wall_up.y + pc.h/2; } } } if (ball.clip.y > pc.clip.y) { if ((pc.clip.y + pc.h/2) < wall_down.y) { pc.clip.y += pc.speed; if (pc.clip.y + pc.h/2 > wall_down.y) { pc.clip.y = wall_down.y - pc.h/2; } } } } //столкновение с полом и потолком function detection () { //столкновение с верхом if (ball1.tempy - ball1.radius < wall_up.y) { var yc = wall_up.y + ball1.radius; var otn = (ball1.tempy - yc)/(ball1.tempy - ball1.clip.y); var xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } //столкновение с низом if (ball1.tempy + ball1.radius > wall_down.y) { yc = wall_down.y - ball1.radius; otn = (ball1.tempy - yc)/(ball1.tempy - ball1.clip.y); xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } //столкновение с правой верхней досочкой if (ball1.tempy + ball1.radius > wall1.y) { yc = wall1.y - ball1.radius; otn = (ball1.tempy - yc)/(ball1.tempy - ball1.clip.y); xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } //столкновение с правой нижней досочкой if (ball1.tempy + ball1.radius > wall2.y) { yc = wall2.y - ball.radius; otn = (ball.tempy - yc)/(ball1.tempy - ball1.clip.y); xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } //столкновение с левой верхней досочкой if (ball1.tempy + ball1.radius > wall3.y) { yc = wall3.y - ball1.radius; otn = (ball1.tempy - yc)/(ball1.tempy - ball1.clip.y); xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } //столкновение с левой нижней досочкой if (ball1.tempy + ball1.radius > wall4.y) { yc = wall4.y - ball1.radius; otn = (ball1.tempy - yc)/(ball1.tempy - ball1.clip.y); xc = ball1.tempx - otn*(ball1.tempx - ball1.clip.x); ball1.tempx = xc; ball1.tempy = yc; ball1.ymov *= -1; } } function board_ball_detect () { //столкновение с доской игрока if (ball1.tempx - ball1.radius < board.clip.x + board.w/2) { if ((ball1.clip.y <= board.clip.y + board.h/2 + ball1.radius/2) && (ball1.clip.y >= board.clip.y - board.h/2 - ball1.radius/2) && ball1.live) { var xc = board.clip.x + board.w/2 + ball1.radius; var otn = (ball1.tempx - xc)/(ball1.tempx - ball1.clip.x); var yc = ball.tempy - otn*(ball1.tempy - ball1.clip.y); ball1.tempx = xc; ball1.tempy = yc; ball1.xmov *= -1; ball1.xmov += 0.5; ball1.ymov *= 1.1; pc.speed *= 1.09; board.speed *= 0.99; } else { ball1.live = false; } } //столкновение с доской противника if (ball1.tempx + ball1.radius >= pc.clip.x - pc.w/2) { if ((ball1.clip.y <= pc.clip.y + pc.h/2 + ball1.radius/2) && (ball1.clip.y >= pc.clip.y - pc.h/2 - ball1.radius/2) && ball1.live) { xc = pc.clip.x - pc.w/2 - ball1.radius; otn = (ball1.tempx - xc)/(ball1.tempx - ball1.clip.x); yc = ball1.tempy - otn*(ball1.tempy - ball1.clip.y); ball1.tempx = xc; ball1.tempy = yc; ball1.xmov *= -1; ball1.xmov -= 0.5; ball1.ymov *= 1.1; pc.speed *= 1.09; board.speed *= 0.99; } else { ball1.live = false; } } } //рисуем шар function render () { ball.clip.x = ball1.tempx; ball.clip.y = ball1.tempy; } function ef (e:Event) { moveBalls (); board_player (); board_pc (); detection (); board_ball_detect (); render (); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|