我想知道是否有可能有一个由多种颜色组成的字母。例如上面你会看到一封希伯来字母。它下面的DOT实际上是字母的一部分,但它是一种不同的颜色。
可以在flash中使用相同的功能吗?我需要做的是上传一个包含所有单词的XML文件,我需要字母下面的所有点都是不同的颜色。
这封信来自这个网站:答案 0 :(得分:1)
我不敢在Flash中使用动态TextFields。
答案 1 :(得分:0)
这是一个基本的例子:
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.geom.Point;
/*
* This is your character
*/
var tf:TextField = new TextField();
tf.selectable = false;
tf.text = "B";
addChild(tf);
var fmt:TextFormat = new TextFormat();
fmt.size = 50;
tf.setTextFormat(fmt);
//Creating a bitmapData from the TextField
var tfBD:BitmapData = new BitmapData(tf.textWidth, tf.textHeight);
tfBD.draw(tf);
var tfB:Bitmap = new Bitmap(tfBD);
addChild(tfB);
//Creating the top part of the character
var tfTopBD:BitmapData = new BitmapData(tfBD.width, tfBD.height/2);
tfTopBD.copyPixels(tfBD, new Rectangle(0, 0, tfBD.width, tfBD.height/2), new Point(0, 0));
var tfTopB:Bitmap = new Bitmap(tfTopBD);
addChild(tfTopB);
//Creating the bottom part of the character
var tfBottomBD:BitmapData = new BitmapData(tfBD.width, tfBD.height/2);
tfBottomBD.copyPixels(tfBD, new Rectangle(0, tfBD.height/2, tfBD.width, tfBD.height/2), new Point(0, 0));
var tfBottomB:Bitmap = new Bitmap(tfBottomBD);
addChild(tfBottomB);
tfB.x = Math.round(stage.stageWidth/2 - tfB.width/2);
tfB.y = Math.round(stage.stageHeight/2 - tfB.height/2);
tf.x = tfB.x - 50;
tf.y = tfB.y;
tfTopB.x = tfB.x + 50;
tfTopB.y = tfB.y;
tfBottomB.x = tfB.x + 50;
tfBottomB.y = tfB.y + tfTopB.height + 10;
基本上我创建了两个bitmapData对象,并将textField的内容复制到它们中,因此我得到了角色的顶部和底部。然后你可以按照自己的意愿重新着色它们。
为了在AS3中着色,我建议使用Greensock补间引擎,我更喜欢使用colorMatrixes和其他丑陋的东西。 http://www.greensock.com/
希望它适合你, 罗布