2011-12-26 29 views
0

UPDATE1 BG请阅读以下 UPDATE2创建一个测试应用程序更新的段。发现flex试图将bg放在容器的中心(画布)。所以新的问题是“如果bg图像比画布(父母)小时如何将bg图像定位在左上角,但仍然存在未解决的神秘难题,这与我如何在小孩身上放置flex有关。在底部 UPDATE3解决方法读UPDATE2 - 不工作柔性3 - 画布背景的知名度问题,如何放在左上角

我试图找出解决,其中一个画布的背景图像不会出现问题

我已经弯曲3.5应用程序,我已经设置高度和宽度为648x1008

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
      layout="absolute" 
      width="1008" height="648" 

在这个我有一个3子画布组件。所有这些都是动态添加的,并定位到0,0,两个画布的高度,宽度都设置为100%。

width="100%" height="100%" 

我的第三画布comp为被退出的情况下(4096×4096)的主要成分。我有代码来启动和停止在鼠标按下和至多处理程序GameConfig.as在变量定义

 mouseDown="mouseDownHandler()" 
     mouseUp="mouseUpHandler()" 
     width="{GameConfig.FULL_GAME_SCREEN_WIDTH}" 
     height="{GameConfig.FULL_GAME_SCREEN_HEIGHT}" 
     backgroundImage="{GameResource.bg}" 

尺寸变量定义中GameResource.as

[Embed(source="../../../../assets/images/bg.jpg")] 
    public static const bg:Class; 

//game screen dimensions 
    public static const FULL_GAME_SCREEN_WIDTH:int = 4096; 
    public static const FULL_GAME_SCREEN_HEIGHT:int = 4096; 

BG类拖动此帆布

背景图像路径是完美的,我已通过向问题画布添加虚拟图像并设置相同的源({GameResource.bg})

现在的问题是,背景图像是不是在所有出现

另外两个帆布可是没有任何背景颜色,他们只是定位在底部和顶部的几个部件(按钮和图像),这意味着问题画布不会隐藏在其他画布之后。 最重要的问题帆布内的儿童出现

我创建了一个虚拟应用程序作为excpeted

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
      height="600" width="800" layout="absolute" 
      horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
<mx:Script> 
    <![CDATA[ 
     import com.fg.greenrev.config.GameResource; 
    ]]> 
</mx:Script> 

<mx:Canvas id="bg" horizontalScrollPolicy="off" verticalScrollPolicy="off" 
      height="1600" width="4096" 
      backgroundColor="0xccbbdd" 
      backgroundImage="{GameResource.bg}" 
      mouseDown="{bg.startDrag(false,new Rectangle(-3296,-1000,3296,1000))}" mouseUp="{bg.stopDrag()}"> 
</mx:Canvas> 

</mx:Application> 

可有人请帮我这是工作的罚款。

UPDATE1: 我刚刚修改了代码,我打开滚动主要应用的政策,我已删除的问题,帆布到其子画布卫生组织大小bgimage也是一样的问题,帆布,现在BG大致出现在应用程序屏幕高度的2倍(1400)并稍微靠近屏幕的右侧(大约200像素)。如果将bgimage移动到问题画布上,它不会再次出现。这看起来像Flex添加bgimage的方式/问题。我假设它在0,0增加,但它看起来不是。

UPDATE2:

我试图创建一个虚拟的应用程序模拟与虚拟代码的情况。 我通过将FULL_GAME_SCREEN_HEIGHT更改为bg(1600)的实际大小来缩小问题范围。早些时候它比bg大(超过2.5倍)。现在图像正常显示。这个问题似乎与试图将图像置于画布中心的flex相关。

我可以复制的问题,让你可以试试这个在您的环境,看看发生了什么

主要应用

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
      height="600" width="800" layout="absolute" 
      creationComplete="init()"> 
      <!--horizontalScrollPolicy="off" verticalScrollPolicy="off"--> 
<mx:Script> 
    <![CDATA[ 
     import _dummy.test1; 
     import _dummy.test2; 
     import _dummy.test3; 

     import com.fg.greenrev.config.GameResource; 

     private function init():void{ 

      var t1:test1 = new test1(); 
      addChild(t1); 

      t1.init(); 

      var t2:test2 = new test2(); 
      addChild(t2); 

      var t3:test3 = new test3(); 
      addChild(t3); 

     } 

    ]]> 
</mx:Script> 

</mx:Application> 

** test1.mxml - 儿童组件(问题1 )*

<mx:Script> 
    <![CDATA[ 
     import com.fg.greenrev.config.GameConfig; 
     import com.fg.greenrev.config.GameResource; 

     import mx.states.AddChild; 

     public function init():void{ 

      var c1:test1Child = new test1Child(); 
      addChild(c1); 
     } 
    ]]> 
</mx:Script> 
<mx:Label x="10" y="10" text="Test1"/> 

</mx:Canvas> 

* test2.mxml - 的child2(没问题)*

<?xml version="1.0" encoding="utf-8"?> 
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
     horizontalScrollPolicy="off" verticalScrollPolicy="off" 
     width="100%" height="100%" 
     x="0" y="0"> 
<mx:Label x="96" y="0" text="Test2"/> 

</mx:Canvas> 

* test3.mxml - child3(没问题)*

<?xml version="1.0" encoding="utf-8"?> 
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
     horizontalScrollPolicy="off" verticalScrollPolicy="off" 
     width="100%" height="100%" 
     x="0" y="0"> 
</mx:Canvas> 

* test1Child.mxml - 儿童child1(没问题,但将bg从test1.mxml移至此处并不会在此测试应用程序中产生任何影响,但会在我的原始应用程序中作出差异)

<?xml version="1.0" encoding="utf-8"?> 
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
     horizontalScrollPolicy="off" verticalScrollPolicy="off" 
     width="{GameConfig.FULL_GAME_SCREEN_WIDTH}" 
     height="{GameConfig.FULL_GAME_SCREEN_HEIGHT}" 
     > 
<mx:Script> 
    <![CDATA[ 
     import com.fg.greenrev.config.GameConfig; 
    ]]> 
</mx:Script> 
<mx:Label x="390" y="0" text="Test1Child"/> 

</mx:Canvas> 

正如你可以看到TEST1和test1Child比主应用 的child2相同的尺寸和较大的(巨大)和child3是100%的宽度和高度

取代FULL_GAME_SCREEN_WIDTH和FULL_GAME_SCREEN_HEIGHT与4096具有4096x1600伪图像和运行应用程序,您将看到bg放置在中心位置(如果您滚动应用程序,则可以看到图像。现在将FULL_GAME_SCREEN_HEIGHT更改为1600(bg的大小),bg会完美显示。

现在有两个问题

Q1)如何使血糖出现在父的中心时,背景图片比容器(父/月) Q2)其实际的难题,令人惊讶的是BG较小当它被放置在问题画布中时(在我的原始应用程序中,test1.mxml为dummy),但在将bg移动到其子项时正确显示(在测试应用程序中的test1Child)时,图像几乎出现在右边角落)

更新3:解决方法不工作

我已经添加了这个作为问题画布中的第一行,bg正在出现,它覆盖了剩余的孩子。我知道在第一行添加它意味着index = 0意味着始终保持背面,但令人惊讶的是,它不仅使其“儿童画布不可见”,而且遮挡了其他画布内的其他控件。我也尝试使用addChildAt(img,0)动态添加图像,并且还通过setChildIndex(img,0)将index设置为0,但没有用处。厌倦了

+0

你可以告诉我背景图片的大小,你是否尝试过调试,并且它会抛出任何错误。 – Exhausted 2011-12-26 13:06:21

+0

@sudharsanan它的4096x1600。它doent抛出任何种类的错误 – 2011-12-26 14:44:44

+0

如何为图像类添加可绑定元标记? – 2011-12-26 16:54:37

回答

0

工作的解决方法

以及我想这woould工作

<mx:Image x="0" y="0" source="{GameResource.bg}" mouseEnabled="false"/> 

但不知什么原因occlding剩余的控件和容器,尽管它是在第一行加入(这使得整数的DisplayIndex = 0)

然后我addeed这个代码动态地添加它们

  var img:Image = new Image(); 
      img.mouseEnabled = false; 
      img.mouseChildren = false; 
      img.source = GameResource.bg; 

      addChildAt(img,0); 

像魅力一样工作。血腥的灵感非常不可预知