Во-первых, вы можете поместить круги динамически, либо совершенно случайно, и вы получите перекрывающиеся элементы, либо поместить их в сетку с небольшим случайным смещением . Возможно, у вас есть отдельный флаг , который будет генерировать круги снова и снова при щелчке , пока вы не будете удовлетворены конфигурацией, а затем выложит код сценария действия для этого с помощью ключа . Вроде как быстрый и грязный редактор уровней.
var circlesNum:int = 20;
var circleRadius:Number = 10;
var circles:Array;
var row:int = 4;
var col:int = 5;
var space:int = 5;
var randomOffset:int = 5;
var randomShift:Number;
function generateCircles(event:MouseEvent = null):void{
circles = [];
while(numChildren > 0) removeChildAt(0);
for(var i:int = 0 ; i < circlesNum; i++){
var circle:Shape = new Shape();
circle.graphics.lineStyle(1);
circle.graphics.drawCircle(0, 0, circleRadius);
circle.name = 'circle'+i;
randomShift = Math.random() * randomOffset - randomOffset * .5;
circle.x = ((circleRadius * 2 +space) * (i % col)) + randomShift;
circle.y = ((circleRadius * 2 +space) * (i % row)) + randomShift;
circles.push(circle);
addChild(circle);
}
}
function generateCode(event:KeyboardEvent = null):void {
var code:String = 'var circles:Array = [';
for(var i:int = 0 ; i < circlesNum; i++){
if(i < circlesNum-1) code += '{name: ' + circles[i].name + 'x: ' + circles[i].x + ',y: ' + circles[i].y + '},\n';
else code += '{name: ' + circles[i].name + 'x: ' + circles[i].x + ',y: ' + circles[i].y + '}];';
}
trace(code);
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, generateCircles);
stage.addEventListener(KeyboardEvent.KEY_DOWN, generateCode);
Вы можете назвать каждый экземпляр клипа круга и использовать actioncript для получения координат.
//assuming circles is a movieclip containing all your circles
var code:String = 'var circles:Array = [';
for(var i:int = 0 ; i < circles.numChildren; i++){
if(i < circles.numChildren-1) code += '{name: ' + circles.getChildAt(i).name +'x: ' + circles.getChildAt(i).x + ',y: ' + circles.getChildAt(i).y + '},';
else code += '{name: ' + circles.getChildAt(i).name +'x: ' + circles.getChildAt(i).x + ',y: ' + circles.getChildAt(i).y + '}];';
}
trace(code);
Если вам нужен только X / Y каждого круга, вы можете использовать JSFL (javascript flash), чтобы пройтись по вашим кругам и выплюнуть координаты.
Вот пример:
var doc = fl.getDocumentDOM();
var sel = doc.selection;
var selStr = 'var circles:Array = [';
if(sel){
var elNum = sel.length;
for(var i = 0 ; i < elNum ; i++){
if(i < elNum-1) selStr += '{name: '+ sel[i].name +', x: ' + sel[i].x + ',y:' + sel[i].y + '},';
else selStr += '{name: '+ sel[i].name +', x: ' + sel[i].x + ',y:' + sel[i].y + '}];';
}
fl.trace(selStr);
}
Перейти к Файл> Создать> Файл Flash Javascript
и вставьте это. Вы можете сохранить его как GetSelectionXY.jsfl в папке Commands , а затем назначить сочетание клавиш , если вы найдете это удобным.
В противном случае выберите свои круги (может быть удобно, чтобы все они были в одном слое, и просто выберите слой) и выполните команду (с помощью кнопки / стрелки воспроизведения).
Должно плевать что-то вроде:
var circles:Array = [{name: c1, x: 286.95,y:172},{name: c1, x: 180.95,y:320},{name: c1, x: 92.95,y:126},{name: c1, x: 184.95,y:190},{name: c1, x: 392.95,y:112},{name: c1, x: 316.95,y:226},{name: c1, x: 84.95,y:207},{name: c1, x: 84.95,y:85}];
на панели вывода .
Самая простая версия , вероятно, будет с jsfl , вы можете просто использовать DrawingObjects, без фрагментов ролика, просто переместить их, а затем нажать волшебную комбинацию клавиш.
Более гибкая версия будет мини-редактором grid thingy .
НТН * * тысяча пятьдесят один