Apache flex 如何在Flex3中将图像(比如PNG)放在图形上?
我是Flex新手,我正在尝试编写一个简单的应用程序。我有一个带有图像的文件,我想在图形上显示此图像。我该怎么做?我尝试了[Embed]-对其进行加密并将其作为子级添加到拥有图形的组件中,但我得到的类型强制失败:无法转换。。。到mx.core.IUIComponent错误。在我的脑海中,我可以想到两件事,它们可能会帮助您,具体取决于您正试图实现的目标: 如果只想显示嵌入的图像,可以将组件添加到后台,并将其源的值设置为要嵌入的图形资产类:Apache flex 如何在Flex3中将图像(比如PNG)放在图形上?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我是Flex新手,我正在尝试编写一个简单的应用程序。我有一个带有图像的文件,我想在图形上显示此图像。我该怎么做?我尝试了[Embed]-对其进行加密并将其作为子级添加到拥有图形的组件中,但我得到的类型强制失败:无法转换。。。到mx.core.IUIComponent错误。在我的脑海中,我可以想到两件事,它们可能会帮助您,具体取决于您正试图实现的目标: 如果只想显示嵌入的图像,可以将组件添加到后台,并将其源的值设置为要嵌入的图形资产类: [Bindable] [Embed(source="asse
[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;
myImage.source = MyGfx;
如果确实要在图形对象上绘制位图,可以使用以下方法:
你可能会发现Adobe网站上的文章很有用,尤其是这一部分。在我的脑海中,我能想到两件事可能会对你有所帮助,这取决于你正试图实现的目标: 如果只想显示嵌入的图像,可以将组件添加到后台,并将其源的值设置为要嵌入的图形资产类:
[Bindable]
[Embed(source="assets/image.png")]
private var MyGfx:Class;
myImage.source = MyGfx;
如果确实要在图形对象上绘制位图,可以使用以下方法:
您可能会发现Adobe网站上的文章很有用,尤其是该部分。您还可以通过将常规AS3 displayobject添加到rawChildren集合myComponent.rawChildren.addChildmyPNG,将其添加到Flex组件中,但这有点像黑客
如果您试图通过myDisplayObject.graphics实现此目的,请发布一些示例源代码。您也可以通过将常规AS3 displayobject添加到Flex组件中,方法是将其添加到rawChildren集合myComponent.rawChildren.addChildmyPNG中,但这有点麻烦
如果您试图通过myDisplayObject.graphics实现此目的,请发布一些示例源代码。因为您是初学者,这里有一个简单的方法 在应用程序中,切换到“设计”视图 将图像组件从组件面板拖到主应用程序画布上 在画布上调整图像大小并使其保持选中状态。在右侧的“属性”面板中,单击“源”字段上的“文件夹”按钮 选择你的形象。如果将图像放置在项目文件夹中,它将包含在生成文件夹中
然后看看源代码视图。您将看到反映您所做工作的MXML代码。你也可以手工改变这个。source=blah.png部分也可以指向远程URL。因为您是初学者,这里有一个简单的方法 在应用程序中,切换到“设计”视图 将图像组件从组件面板拖到主应用程序画布上 在画布上调整图像大小并使其保持选中状态。在右侧的“属性”面板中,单击“源”字段上的“文件夹”按钮 选择你的形象。如果将图像放置在项目文件夹中,它将包含在生成文件夹中
然后看看源代码视图。您将看到反映您所做工作的MXML代码。你也可以手工改变这个。source=blah.png部分也可以指向远程URL。好的,还有其他方法 你可以跟着
并使用beginBitmapFill方法查看示例非常有用 好的,还有另一种方法 你可以跟着
并使用beginBitmapFill方法查看示例非常有用 接受的答案不完整,因为如果不调用drawRect,将无法提取任何内容。我已经用这种方式实现了它,它很有效。请注意,我添加了一个矩阵转换,否则图像必须在0,0处绘制,否则将被错误地剪裁
[Embed(source='assets/land-field.png')]
private var ImgField:Class;
private var field:BitmapData = new ImgField().bitmapData;
public static function drawImage(g:Graphics, image:BitmapData, x:int, y:int):void {
var mtx:Matrix = new Matrix();
mtx.translate(x, y);
g.beginBitmapFill(image, mtx, false, false);
g.drawRect(x, y, image.width, image.height);
g.endFill();
}
接受的答案是不完整的,因为如果不调用drawRect,将不会提取任何内容。我已经用这种方式实现了它,它很有效。请注意,我添加了一个矩阵转换,否则图像必须在0,0处绘制,否则将被错误地剪裁
[Embed(source='assets/land-field.png')]
private var ImgField:Class;
private var field:BitmapData = new ImgField().bitmapData;
public static function drawImage(g:Graphics, image:BitmapData, x:int, y:int):void {
var mtx:Matrix = new Matrix();
mtx.translate(x, y);
g.beginBitmapFill(image, mtx, false, false);
g.drawRect(x, y, image.width, image.height);
g.endFill();
}
你能发布一些示例代码来说明你打算如何使用图形对象吗?你能发布一些示例代码来说明你打算如何使用图形对象吗?这在这里也有一定的相关性:这在这里也有一定的相关性:但这只适用于你使用flash的情况。由于他没有明确说明他使用的是flash,我们应该假设他使用的是纯actionscript。但这只适用于您使用flash的情况。由于他没有指定他使用的是flash,我们应该假设他使用的是纯actionscript。