#actionscript-3 #object #properties #refer
#actionscript-3 #объект #свойства #обратитесь
Вопрос:
Ну, я играю в шашки, и мне нужно сослаться на фигуру по ее положению (x и y, оба) и удалить ее с экрана (с этим проблем нет).
Я собирал комбинации с «этим». но ничего. Как бы вы это сделали?
Ответ №1:
this.x и this.y являются функциональными из области вашего объекта checkers pieces; однако, если вы обращаетесь к фрагменту за пределами их области, вы должны использовать имя экземпляра фрагмента. Хотя это и не оптимально, вы можете перебирать дочерние DisplayObjects .
// create a collection of your checker pieces
var checkers:Array = [];
// create a checker piece, whatever your DisplayObject class is.
var checker:Checker;
checkers.push(checker);
// add it to the stage, probably your game board
addChild(checker);
checker.x = 100;
checker.y = 100;
// loop through the children (from your game board)
for (var i:uint = 0; i < numChildren; i )
{
var checker:DisplayObject = getChildAt(i);
trace(checker.x);
trace(checker.y);
}
Использование координат для ссылки на фигуру может быть неоптимальным для игры. Возможно, вы захотите рассмотреть строку / столбец или подойти к нему с точки зрения того, как работает ваша игровая доска.
Если это неясно, вам следует указать некоторый код или расширить свой вопрос более подробно.
Комментарии:
1. Все средства проверки взяты из класса Checker (расширенного из MovieClip) и checker . side — это свойство вида strig, которое может быть «белым» или «черным». Когда они расположены на экране, создается массив для хранения их относительного положения. Итак, у шашек также есть _row (от 0 до 7) и _column (тоже от 0 до 7), и массив обновляется после каждого перемещения, чтобы вычислить, возможно ли перемещение или нет. Но контролеры не находятся в массиве, должен ли я сделать то, что вы сделали в вашем примере кода, и найти их по _row и _column ?
2. Я последовал вашему примеру, и это сработало, все, что мне было нужно, это добавить все контрольные элементы в массив и волшебную строку «var checker:DisplayObject = getChildAt(0);», чтобы проверить один за другим, какая проверка обладает этим свойством, и удалить его. Я изменил вашу последнюю часть примера, чтобы попробовать это: <br/>
function removeChecker (event:TimerEvent){ for(var i:uint = 0; i<checkers.length; i ){<br/> var checker:DisplayObject = getChildAt(i);<br/> if (checker.x==200 amp;amp; checker.y==200){<br/> removeChild(checker);<br/> }<br/> }<br/> }
Большое спасибо.3. Да, извините, у меня был getChildAt(0) — вы совершенно правы. Спасибо!