Здравствуйте! Вопрос будет довольно обширный и всесторонний...
Начну с кода. Оставляйте пожалуйста примечания (как можно было бы сделать лучше), если такие возникнут...А они возникнут!!!
Main.as

Код AS3:
package {
import flash.display.*;
import flash.events.*;
public class Main extends MovieClip {
var player:Sprite;
var line:Sprite;
var lineArray:Array = new Array();
var right:Boolean;
var left:Boolean;
var stay:Boolean;
var speed:int = 5;
function Main() {
createPlayer() //Создаем игрока
CONTROLER() //Управление для игрока
}
function createPlayer() {
player = new Sprite();
player.graphics.lineStyle(1,0xFF0000,1);
player.graphics.drawCircle(0,0,16);
player.x = 200;
player.y = 200;
addChild(player);
var numRotation:int = 0;
for(var i = 0; i <= 7; i++) {
line = new Sprite();
line.graphics.lineStyle(1,0x000000,1);
line.graphics.lineTo(0,200);
line.x = player.x;
line.y = player.y;
addChild(line);
lineArray.unshift(line);
lineArray[0].rotation += numRotation;
numRotation += 45;
}
addEventListener(Event.ENTER_FRAME, linesListener);
}
function linesListener(e:Event) {
for(var j = 0; j < lineArray.length; j++) {
lineArray[j].x = player.x;
lineArray[j].y = player.y;
}
}
//УПРАВЛЕНИЕ------------------------
function CONTROLER() {
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
stage.addEventListener(Event.ENTER_FRAME,updateMove);
}
function key_down(e:KeyboardEvent) {
if(e.keyCode == 39) {
right = true;
}
if(e.keyCode == 37) {
left = true;
}
if(right && left) {
stay = true;
}
}
function key_up(e:KeyboardEvent) {
if(e.keyCode == 39) {
right = false;
}
if(e.keyCode == 37) {
left = false;
}
if(right && left) {
stay = false;
}
}
function updateMove(e:Event) {
if(right) {
player.x += speed;
}
if(left) {
player.x -= speed;
}
if(stay) {
//СТОИМ
}
}
}
}
Линии(потом они будут невидимы, это как бы "зона видимости" в игре), я хочу сделать так, чтобы натыкаясь на "препятствия"(стены) линии бы уменьшались, уменьшая тем самым "зону видимости". Но так как я мало знаком с методом hitTest( ), реализовать это я не могу...Подскажите пожалуйста, как это сделать? Ранее я пытался сделать это с hitTestObject( ), но естественно диагональные линии сокращались (scaleY -), не касаясь препятствий... И еще...они сокращались как бы постепенно, то есть, если зайти за "стену", где линия будет соприкасаться центром, получался казус. Еще я думал убрать этот изъян с помощью циклов(но так и не взялся за это), то есть при соприкосновении со стеной в любой точки... запускается цикл, который уменьшает линию и выводит только итоговый результат, так как это цикл...Тогда как избежать бесконечного цикла?!
Спасибо за внимание...И заранее спасибо за любую помощь, а также громадные плюсы тем, кто поможет улучшить код и отписывать "примечания"...
