Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 带有Flex的全屏背景图像_Apache Flex_Flash_Actionscript 3 - Fatal编程技术网

Apache flex 带有Flex的全屏背景图像

Apache flex 带有Flex的全屏背景图像,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,我想将图像加载到我的Flex应用程序的背景中。然而,我想知道一些事情,并有一些禁忌 我希望它与CSS的处理方式非常相似。请参见以下示例 非常重要的是,图像后面没有显示空白背景色,并且图像没有拉伸。这意味着一些图像将被切断。这绝对是好的。实际上,上面链接页面上项目符号列表中的前五点正是我想要的 我是Flex框架的新手,但有很强的AS3背景。因此,我可以使用一个掩码、stage.width/height、stages RESIZE事件和一点数学知识轻松地使用actionscript实现这一点。但我想

我想将图像加载到我的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处理图像加载等。此外,您的示例不使用掩码,因此它会在包含图像的容器内创建滚动条吗?