Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   AC3.0 error 1011 a term is undefined and has no properties (http://www.flasher.ru/forum/showthread.php?t=211639)

Illiyaz 06.10.2015 13:43

AC3.0 error 1011 a term is undefined and has no properties
 
Вложений: 1
Я не очень давно изучаю АС... И совсем не могу понять, откуда такая ошибка ) (прикрепил файл с кодом в раре)

caseyryan 06.10.2015 20:21

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

Illiyaz 13.10.2015 12:04

Код AS3:

//игра неоновый пинпонг
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

Вложений: 1
у меня ругается на

delphic 14.10.2015 13:14

хммм, ругается на код
Код AS3:

yc = wall.y - ball.radius;

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

Illiyaz 14.10.2015 14:01

обновленная версия... ошибок нет.. но.. не работает -,-
Код AS3:

//игра неоновый пинпонг
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, время: 22:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.