我是动作脚本的新手。试图将句子分为单词并以精灵的形式显示。而且还需要我单击的哪个精灵
我试图将句子分为单词,并将其显示为Sprite()
var sentence:String = "My name is Subhadip.";
var txt:Array = new Array();
var splittedSentence:Array = sentence.split(" ");
var myArraySprites:Array = new Array();
var myTextImage:Array = new Array();
var div = 40;
for (var i:int = 0; i < splittedSentence.length; i++)
{
var v = 300 - (div * i);
//...
txt[i] = new TextField();
txt[i].autoSize = TextFieldAutoSize.CENTER;
txt[i].text = splittedSentence[i];
var format1:TextFormat = new TextFormat();
format1.size = 24;
txt[i].setTextFormat(format1);
trace(txt[i]);
myArraySprites[i] = new Sprite();
myArraySprites[i].graphics.lineStyle(1, 0x000000, 1);
myArraySprites[i].buttonMode = true;
myArraySprites[i].graphics.beginFill( 0xfffffff );
myArraySprites[i].graphics.drawRect(50, v, 150, div);
myTextImage[i] = new BitmapData(100,v,true,0xffffff);
myTextImage[i].draw(txt[i]);
trace(myTextImage[i]);
//myArraySprites[i].graphics.beginBitmapFill(myTextImage[i]);
//myArraySprites[i].graphics.endFill();
myArraySprites[i].addChild(new Bitmap(myTextImage[i]));
addChild(myArraySprites[i]);
myArraySprites[i].addEventListener(MouseEvent.CLICK, removeThis);
}
function removeThis(e:MouseEvent):void
{
var clickTarget:int = myArraySprites.indexOf(e.currentTarget);
trace("Clicked sprite (id): " + clickTarget);
}
[在此处输入图像说明] [1]
试图将句子分为单词并在Sprite中显示。而且还需要我单击哪个精灵 [1]: https://i.sstatic.net/rzhuq.png
I am trying to split a sentence in to words and show them into sprite()
var sentence:String = "My name is Subhadip.";
var txt:Array = new Array();
var splittedSentence:Array = sentence.split(" ");
var myArraySprites:Array = new Array();
var myTextImage:Array = new Array();
var div = 40;
for (var i:int = 0; i < splittedSentence.length; i++)
{
var v = 300 - (div * i);
//...
txt[i] = new TextField();
txt[i].autoSize = TextFieldAutoSize.CENTER;
txt[i].text = splittedSentence[i];
var format1:TextFormat = new TextFormat();
format1.size = 24;
txt[i].setTextFormat(format1);
trace(txt[i]);
myArraySprites[i] = new Sprite();
myArraySprites[i].graphics.lineStyle(1, 0x000000, 1);
myArraySprites[i].buttonMode = true;
myArraySprites[i].graphics.beginFill( 0xfffffff );
myArraySprites[i].graphics.drawRect(50, v, 150, div);
myTextImage[i] = new BitmapData(100,v,true,0xffffff);
myTextImage[i].draw(txt[i]);
trace(myTextImage[i]);
//myArraySprites[i].graphics.beginBitmapFill(myTextImage[i]);
//myArraySprites[i].graphics.endFill();
myArraySprites[i].addChild(new Bitmap(myTextImage[i]));
addChild(myArraySprites[i]);
myArraySprites[i].addEventListener(MouseEvent.CLICK, removeThis);
}
function removeThis(e:MouseEvent):void
{
var clickTarget:int = myArraySprites.indexOf(e.currentTarget);
trace("Clicked sprite (id): " + clickTarget);
}
[enter image description here][1]
trying to split a sentence into words and show them in sprite.and also need which sprite i clicked
[1]: https://i.sstatic.net/RzHUQ.png
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题在于,您正在两个不同的地方处理屏幕位置:
并
以更面向对象的方式对其进行思考。每个
Sprite
实例您要单击是一个对象。因此,它还保留了主要属性,例如由x
和y
属性确定的屏幕位置。这些精灵中的每一个都具有相等的宽度&amp;高度,因此将其作为全球财产。
如果我们查看您的.png,我们可以看到您想在这样的精灵中以一个单词为中心。为了使事情变得更容易,我们可以使用
.align
textformat
类的属性,将其设置为“ Center”
,并使每个Textfield 150 x 40使用wid
和hei
属性。最后,每个精灵的垂直屏幕位置都通过
hei
== 40像素移动。因此,让我们确定一个开始位置:将其分配给Sprite实例:
并通过
hei
将其降低。一切都放在一起:
The problem is that you're dealing with screen positions in two different places:
and
Think of it in a more object-oriented way. Each
Sprite
instance you want to be clickable is a single object. As such it also holds the main properties e.g. the on-screen position determined by it'sx
andy
properties.Each of those sprites have equal width & height, so make this a global property.
If we look at your .png, we can see that you want to have a single word centered inside such a sprite. To make things easier, we can use the
.align
property of theTextFormat
class, set it to"center"
and make each TextField 150 x 40 by using thewid
andhei
properties.Finally each sprite's vertical screen position is shifted up by
hei
== 40 pixels. So let's determine a start position:assign it to a sprite instance:
and decrement it by
hei
inside the for-loop.Everything put together: