Apache flex 带有Flex的全屏背景图像
我想将图像加载到我的Flex应用程序的背景中。然而,我想知道一些事情,并有一些禁忌 我希望它与CSS的处理方式非常相似。请参见以下示例 非常重要的是,图像后面没有显示空白背景色,并且图像没有拉伸。这意味着一些图像将被切断。这绝对是好的。实际上,上面链接页面上项目符号列表中的前五点正是我想要的 我是Flex框架的新手,但有很强的AS3背景。因此,我可以使用一个掩码、stage.width/height、stages RESIZE事件和一点数学知识轻松地使用actionscript实现这一点。但我想知道做这件事的灵活方式是什么 我不想缩小答案的范围,但我会创建自己的组件,扩展画布,并将其放在所有其他内容后面吗?或者设置应用程序的某些属性?还是什么Apache flex 带有Flex的全屏背景图像,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,我想将图像加载到我的Flex应用程序的背景中。然而,我想知道一些事情,并有一些禁忌 我希望它与CSS的处理方式非常相似。请参见以下示例 非常重要的是,图像后面没有显示空白背景色,并且图像没有拉伸。这意味着一些图像将被切断。这绝对是好的。实际上,上面链接页面上项目符号列表中的前五点正是我想要的 我是Flex框架的新手,但有很强的AS3背景。因此,我可以使用一个掩码、stage.width/height、stages RESIZE事件和一点数学知识轻松地使用actionscript实现这一点。但我想
谢谢。尽管这是一个纯as3解决方案,它可能会让您朝着正确的方向前进,但这会从图像的0,0点开始缩放图像,但将其更改为从中心缩放并不困难。代码如下:
stage.align = "TL";
stage.scaleMode = "noScale";
// store original image size
var imgW:Number = img.width;
var imgH:Number = img.height;
// stage dimensions
var sW:Number = stage.stageWidth;
var sH:Number = stage.stageHeight;
resizer(null);
stage.addEventListener(Event.RESIZE, resizer);
private function resizer(e:Event):void
{
// current stage dimension
sW = stage.stageWidth;
sH = stage.stageHeight;
// check for proportions to make the resize based on right axis
if ((sW / imgW) > (sH / imgH)) {
img.width = sW;
img.height = imgH * (img.width / imgW);
} else {
img.height = sH;
img.width = imgW * (img.height / imgH);
}
// here you may want to deal with resize from center
img.x = 0;
img.y = 0;
}
虽然这是一个纯粹的as3解决方案,它可能会让你在正确的方向,这缩放图像从它的点0,0,但不难改变它从中心缩放。代码如下:
stage.align = "TL";
stage.scaleMode = "noScale";
// store original image size
var imgW:Number = img.width;
var imgH:Number = img.height;
// stage dimensions
var sW:Number = stage.stageWidth;
var sH:Number = stage.stageHeight;
resizer(null);
stage.addEventListener(Event.RESIZE, resizer);
private function resizer(e:Event):void
{
// current stage dimension
sW = stage.stageWidth;
sH = stage.stageHeight;
// check for proportions to make the resize based on right axis
if ((sW / imgW) > (sH / imgH)) {
img.width = sW;
img.height = imgH * (img.width / imgW);
} else {
img.height = sH;
img.width = imgW * (img.height / imgH);
}
// here you may want to deal with resize from center
img.x = 0;
img.y = 0;
}
由于某些原因,在Flex中不能特别容易地做到这一点。我相信,您可以使用Degrafa的CSSSkin来完成这项工作。由于某些原因,您在Flex中无法轻松完成这项工作。我敢肯定,你可以用Degrafa的CSSSkin来做这件事。给这只猫剥皮的方法大概有一百万种。一种方法是:在我们的flex应用程序中,主容器后面有一个画布,如中所示
<mx:Canvas id="bgImg" width="1280" height="800" backgroundImage="assets/background.jpg" />
<containers:FlashContainer id="mainContainer">
<!-- HBoxs, VBoxes and loads of other components -->
</containers:FlashContainer>
原谅我,我不知道什么样的风格可以在我的头顶上衬托出来,但它们很容易查出来
在我们的应用程序中,窗口大小是固定的,我们的背景永远不需要改变大小。但如果是这样,我也会
1将画布宽度/高度绑定到简单计算或
2添加一个侦听器,该侦听器响应调整大小事件并设置绑定的宽度和高度变量或
3在画布图像上尝试CSS,看看我能做些什么
注意:要创建一个可绑定变量,您需要按照
[Bindable]
var imageWidth:int;
或
使用标签
我希望所有这些都能帮助你,或者至少能为你指明帮助的方向!
-kg给这只猫剥皮的方法大概有一百万种。一种方法是:在我们的flex应用程序中,主容器后面有一个画布,如中所示
<mx:Canvas id="bgImg" width="1280" height="800" backgroundImage="assets/background.jpg" />
<containers:FlashContainer id="mainContainer">
<!-- HBoxs, VBoxes and loads of other components -->
</containers:FlashContainer>
原谅我,我不知道什么样的风格可以在我的头顶上衬托出来,但它们很容易查出来
在我们的应用程序中,窗口大小是固定的,我们的背景永远不需要改变大小。但如果是这样,我也会
1将画布宽度/高度绑定到简单计算或
2添加一个侦听器,该侦听器响应调整大小事件并设置绑定的宽度和高度变量或
3在画布图像上尝试CSS,看看我能做些什么
注意:要创建一个可绑定变量,您需要按照
[Bindable]
var imageWidth:int;
或
使用标签
我希望所有这些都能帮助你,或者至少能为你指明帮助的方向!
-kg这里有一个自定义组件,可以用图像填充任何矩形。如果矩形纵横比与图像不同,它不会拉伸图像,也不会显示空白,而是会剪裁图像的边缘。图像将被缩放。始终至少有一个维度将100%填充矩形,但另一个维度将被剪裁 这基于Flex的UIComponent、组件生命周期和映像 第二代 然后,在应用程序中,您只需为该组件设置一个mxml标记,如下所示:
<components:ClippedImage id="background" width="100%" height="100%"
source="assets/images/winery.jpg"/>
这是一个自定义组件,它将用图像填充任何矩形。如果矩形纵横比与图像不同,它不会拉伸图像,也不会显示空白,而是会剪裁图像的边缘。图像将被缩放。始终至少有一个维度将100%填充矩形,但另一个维度将被剪裁 这基于Flex的UIComponent、组件生命周期和映像 第二代 然后,在应用程序中,您只需为该组件设置一个mxml标记,如下所示:
<components:ClippedImage id="background" width="100%" height="100%"
source="assets/images/winery.jpg"/>
你试过了吗
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundImage="@Embed(source='something.jpg')"
backgroundAttachment="fixed" ...
这应该将image something.jpg放置到背景中,而不调整大小。
这些背景属性是样式,所以你可以把它们放到css中。你试过了吗
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundImage="@Embed(source='something.jpg')"
backgroundAttachment="fixed" ...
这应该将image something.jpg放置到背景中,而不调整大小。
这些背景属性是样式,所以你可以将它们放在css中。是的,我可以用actionscript来实现这一点,我以前没有做过很多次,但我更喜欢用Flex来实现。我对Flex所知的一点告诉我
e framework可能会帮我很多忙,例如,我更喜欢Flex来处理图像的加载等。此外,您的示例不使用掩码,因此它会在容器中创建带有图像的滚动条吗?是的,我可以使用actionscript来完成这项工作。我以前没有做过很多次,但我更喜欢灵活的方式。我对Flex所知的一点告诉我,框架可能会对我有很大帮助,例如,我更希望Flex处理图像加载等。此外,您的示例不使用掩码,因此它会在包含图像的容器内创建滚动条吗?