Titanium MobileWeb应用程序-闪烁背景



遇到一个非常奇怪的问题,

在我的主窗口上,我有一个背景图像

然而,每当我点击屏幕上的任何地方,或尝试在文本字段中聚焦时,它都会闪烁

我添加了一个视频来演示它的行为

http://www.youtube.com/watch?v=W01vUQ_9DjY

窗口上唯一的样式是:

"#main": {
    backgroundColor:"#f4b7d1",
    backgroundImage: "/images/bg.png"
}

我也试过

"#main": {
    backgroundColor:"#f4b7d1",
    backgroundImage: "/images/bg.png",
    backgroundFocusedImage: "/images/bg.png",
    backgroundSelectedImage: "/images/bg.png"
}

感谢

我也遇到了这个问题。

根本原因是Titanium在每次单击事件后都会重新分配backgroundImage属性,而不管实际属性是否已更改。

为了解决这个问题,你可以破解处理backgroundImage更新的Element.js文件。

编辑可以应用于以下两个位置之一(仅在Windows 3.1.3.GA版本上测试):

  1. %ProjectFolder%buildmobilewebtitaniumTi_UIElement.js

    在这里,我们正在编辑生成的JS文件,这必须在每次构建后完成。如果你不想编辑实际的Titanium SDK,只想在最终版本中进行修复,那么这个选项可能会很有用。

  2. C:%USER FOLDER%App DataRoamingTitaniummobilesdkwin323.1.3.GAmobilewebtitaniumTi_UIElement.js

    如果编辑此文件,则实际上是在更改Titanium SDK。您只需要在升级到新的SDK版本时重复此编辑。

选择您的文件,然后从第534:行开始应用此编辑

更改:

bi = style.url(bi);
nodeStyle.backgroundImage.replace(/'|"/g, '').toLowerCase() !== bi.toLowerCase() &&(nodeStyle.backgroundImage = bi);

收件人:

bi = style.url(bi);
var currentB = nodeStyle.backgroundImage;
var ind=currentB.lastIndexOf("/");
var ind2= bi.lastIndexOf("/");
if(nodeStyle.backgroundImage.substr(ind) !== bi.substr(ind2))
{
       nodeStyle.backgroundImage.replace(/'|"/g, '').toLowerCase() !== bi.toLowerCase() && (nodeStyle.backgroundImage = bi);
}

此修复程序导致Titanium仅在背景图像的文件名更改时重置backgroundImage属性。请注意,此代码只检查文件名是否更改,而不检查路径,因此,如果这对您很重要,请相应地调整代码。

此编辑也适用于SDK版本:3.2.0 GA.

最新更新