在Flash AS3中查找绘制对象的坐标
我正在用Flash制作一个棋盘游戏;作为全面掌握Flash AS3过程的一部分 我有一个原始板的JPEG。它包含约1000个圆圈,玩家可以在这些圆圈之间移动棋子。相当标准的棋盘游戏。这些圆的间隔不是规则的 到目前为止,我已经用Flash手工画出了这些圆圈,并将它们放置在需要的位置。这看起来很棒-我可以看到我所有的地方 我现在想做的是通过编程创建这些圆。我希望能够做到这一点,以便我可以调整空间的外观(取决于游戏状态)。最终,我希望能够缩放/平移整个游戏板 我的问题是,有没有一种方法可以用唯一的参考标记每个圆圈,然后循环并记录位置? 我在想一些类似Javascript DOM“getElementsByTagName”或类似的东西 目前我只能看到两种选择:在Flash AS3中查找绘制对象的坐标,flash,actionscript-3,Flash,Actionscript 3,我正在用Flash制作一个棋盘游戏;作为全面掌握Flash AS3过程的一部分 我有一个原始板的JPEG。它包含约1000个圆圈,玩家可以在这些圆圈之间移动棋子。相当标准的棋盘游戏。这些圆的间隔不是规则的 到目前为止,我已经用Flash手工画出了这些圆圈,并将它们放置在需要的位置。这看起来很棒-我可以看到我所有的地方 我现在想做的是通过编程创建这些圆。我希望能够做到这一点,以便我可以调整空间的外观(取决于游戏状态)。最终,我希望能够缩放/平移整个游戏板 我的问题是,有没有一种方法可以用唯一的参考
我对Flash还比较陌生,但我确实有技术背景。我的意思是,我不需要解释每一个基本细节;相反,我只需要有人给我指出正确的方向!谢谢 您可以首先动态地放置圆,或者完全随机,然后让元素重叠,或者将它们放置在具有小随机偏移的网格中。可能有一个单独的fla,它将点击一次又一次地生成圆圈,直到你对配置满意为止,然后使用一个键吐出动作脚本代码。有点像一个又快又脏的关卡编辑器
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);
在输出面板中
最简单的版本可能是使用jsfl,您可以只使用DrawingObject,不使用电影剪辑,只需移动它们,然后按下神奇的shorcut键。
更灵活的版本是迷你编辑器grid thingy
HTH您可以首先动态放置圆,要么完全随机,元素重叠,要么将它们放置在具有小随机偏移的网格中。可能有一个单独的fla,它将点击一次又一次地生成圆圈,直到你对配置满意为止,然后使用一个键吐出动作脚本代码。有点像一个又快又脏的关卡编辑器
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);
在输出面板中
最简单的版本可能是使用jsfl,您可以只使用DrawingObject,不使用电影剪辑,只需移动它们,然后按下神奇的shorcut键。
更灵活的版本是迷你编辑器grid thingy
HTH印象深刻。Javascript代码片段就是我正在寻找的那种东西,并且工作得很好。唯一轻微的问题是“标签”或“标签”问题;我画了一张图,我把每个圆圈都标上了“圆圈1”、“圆圈2”等。。不知何故,我需要这些信息和位置。谢谢你的回复。我明白了,然后看看第一段和第二段。如果您从代码(包括名称)生成圆,或者您在舞台上命名圆电影剪辑,然后生成代码。jsfl更新,如果您使用组或绘图对象,hames将为空,但是如果您使用MovieClips,它应该拾取实例名称。有你的选择:)适当的印象。Javascript代码片段就是我正在寻找的那种东西,并且工作得很好。唯一轻微的问题是“标签”或“标签”问题;我画了一张图,我把每个圆圈都标上了“圆圈1”、“圆圈2”等。。不知何故,我需要这些信息和位置。谢谢你的回复。我明白了,然后看看第一段和第二段。如果您从代码(包括名称)生成圆,或者您在舞台上命名圆电影剪辑,然后生成代码。jsfl更新,如果您使用组或绘图对象,hames将为空,但是如果您使用MovieClips,它应该拾取实例名称。有你的选择:)
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);
}
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}];