PDA

Просмотр полной версии : AC3.0 error 1011 a term is undefined and has no properties


Illiyaz
06.10.2015, 13:43
Я не очень давно изучаю АС... И совсем не могу понять, откуда такая ошибка ) (прикрепил файл с кодом в раре)

caseyryan
06.10.2015, 20:21
Код надо сюда выкладывать, в теги [AS3 ][/AS3 ]

Illiyaz
13.10.2015, 12:04
//игра неоновый пинпонг
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 ();
}


Добавлено через 1 минуту
Вот код =)

Wolsh
13.10.2015, 12:26
Что такое board1 и board2? Я так понимаю, у Вас объекты просто находятся в кадре на сцене. Тогда по коду невозможно сказать, с каким из них проблемы.
И ошибка то где, в какой строке?
Убедидесь, что всем объектам задан правильный Instance name.

Illiyaz
13.10.2015, 14:54
В том-то и дело, что я не знаю в какой строке ) так-бы я сделал сам)
Доски это объекты. а вот насчет последнего... поищу, я мог такое сделать )

undefined
13.10.2015, 16:52
Illiyaz,запускаешь в flash IDE? Попробуй запустить в режиме отладки ctrl+sfift+enter- увидишь где эксепшен бросается.

delphic
14.10.2015, 12:53
я смотрел,что то не увидел где у вас доска,есть мяч и поле,разметка на поле,у меня тоже ругнулся именно на доску,в коде есть, но код ругается на то что а где доска,найти не могу,может что то проглядел,может стоит посмотреть где она должна быть,добавить ее на сцену.....

undefined
14.10.2015, 13:00
у меня ругается на

delphic
14.10.2015, 13:14
хммм, ругается на код

yc = wall.y - ball.radius;

ошибка -1120: Обращение несуществующего свойства wall.
а где этот мувик wall? или что это

Illiyaz
14.10.2015, 14:01
обновленная версия... ошибок нет.. но.. не работает -,-
//игра неоновый пинпонг
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 ();
}