Google Analytics在SWFAddress下检测不完整的问题

问题描述:
denizen中国站:http://cn.denizen.com/denizen-china/#/home
Google分析只能追踪到/denizen-china/,#符号后面都追踪不到。

问题分析与解决:
追踪代码是放在</body>标记前,代码如下:

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18173256-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? ' https://ssl' : ' http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>

因为位置比较靠后,可能和其他js有冲突,所以把这段追踪代码提到最前。
发现还是不行,把

_gaq.push(['_trackPageview']);

改为

_gaq.push(['_trackPageview', document.location.pathname + document.location.hash.replace("#/","")]);

还可以把

<script type="text/javascript" src="js/swfaddress.js"></script>

改为

<script type="text/javascript" src="js/swfaddress.js?tracker=pageTracker._trackPageview"></script>

大功告成。

循环引用错误

问题描述:

今天在做denizen puzzle的iPad版,Xcode有两个文件报错:

/Users/CouldHll/Desktop/Puzzle/Classes/StartButton.h:16:0 /Users/CouldHll/Desktop/Puzzle/Classes/StartButton.h:16: error: expected specifier-qualifier-list before 'StartLayer'

/Users/CouldHll/Desktop/Puzzle/Classes/StartLayer.h:16:0 /Users/CouldHll/Desktop/Puzzle/Classes/StartLayer.h:16: error: expected specifier-qualifier-list before 'StartButton'

问题分析:

仔细检查了一下,代码没有问题。检查着,突然发现这两个文件是circle reference,两个文件头都互相引用:

#import "StartLayer.h"

#import "StartButton.h"

问题解决:

一个改成@class StartLayer;

一个保持#import "StartButton.h"

一切安逸了。

在某些 Mac 电脑上使用 Microsoft Windows 时声音可能无法自动切换到耳机

今天发现MacBook Pro在Win7下插耳机没有声音,发现是bug,用了以下的方法无效,期待Boot Camp补丁。

http://support.apple.com/kb/HT3588?viewlocale=zh_CN

摘要

在以下使用 Microsoft Windows 的 Mac 电脑上,将耳机插入 3.5 mm 的耳机插孔时,声音可能无法自动切换到耳机。

  • MacBook Pro(17 英寸,2010 年中)
  • MacBook(13 英寸,2009 年末)
  • iMac(2009 年末)
  • MacBook Pro(13 英寸,2009 年中)及更新机型
  • MacBook Pro(15 英寸,2.53GHz,2009 年中)
  • MacBook Pro(15 英寸,2009 年中)及更新机型

受影响的产品

MacBook Pro (13 英寸, 2009 年中), MacBook Pro (15 英寸, 2009 年中), MacBook Pro (15 英寸, 2.53 GHz, 2009 年中), MacBook Pro (17 英寸, 2010 年中), MacBook Pro (13 英寸, 2010 年中), MacBook Pro (15 英寸, 2010 年中), iMac(21.5 英寸,2009 年末), iMac(27 英寸,2009 年末)

要将声音切换到耳机,请执行以下步骤:

  1. 将耳机插入耳机插孔。
  2. 点按“开始”。
  3. 选择“控制面板”。
  4. 点按“硬件和声音”。
  5. 找到“声音”并选择“管理音频设备”。
  6. 选择“扬声器”;此时会出现一个绿色勾号。
  7. 点按“属性”。
  8. 确保已选择 3.5 mm 插孔并启用设备。
  9. 点按“确定”。

函数返回值为枚举类型引起的错误

问题描述:
今天,做Denizen联手拼图iPad版,- (PlateOrientation)orientationRight读取属性函数中的return [self convertAngleToOrientation:_angleRight];报错:error: incompatible types in return

问题分析:
拆分 return [self convertAngleToOrientation:_angleRight];变为:
PlateOrientation orientation=[self convertAngleToOrientation:_angleRight];
return  orientation;
继续报错: error: incompatible types in assignment
原来问题出在 [self convertAngleToOrientation:_angleRight]上,这个应该返回enum的函数,用枚举接受其值却报错。

问题解决:
enum总是uint的,先用uint接住再转成enum:
uint uintOrientation=[self convertAngleToOrientation:_angleRight];
PlateOrientation orientation=uintOrientation;
return orientation;

PS:调用函数原型:
- (PlateOrientation)convertAngleToOrientation: (uint)vAngle

跨SWF安全沙箱引起的类型转换问题

问题描述:
今天做Denizen Hello,用的是Gaia框架,LoadingPage调用IndexPage中的MapPainter类型的对象出现如下错误:
TypeError: Error #1034: 强制转换类型失败:无法将 com.couldhll.bitmaptext::MapPainter@24f793a1 转换为 com.couldhll.bitmaptext.MapPainter。

问题分析:
检查LoadingPage和IndexPage中的类型,确认都是com.couldhll.bitmaptext.MapPainter类型。
但是IndexPage中是MapPainter@24f793a1类型,而LoadingPage中是MapPainter类型。
开始怀疑IndexPage中有问题,但是无果。偶尔在Main.as中使用MapPainter类型的对象后,一切正常。

问题解决:
其实我们都知道Loader.load()后面一个参数是安全命名空间参数,要设置成:SecurityDomain.currentDomain。
在Gaia中,可以在site.xml中为page设定domain="current"。
本例如下:
<?xml version="1.0" encoding="UTF-8"?>
<site title="Hello" menu="true">
    <page id="index" src="index.swf" domain="current" >
        <page id="nav" src="nav.swf" depth="top" domain="current" >
            <page id="loading" title="Loading" src="loading.swf" menu="true" domain="current" />
   <page id="home" title="Home" src="home.swf" menu="true" domain="current" />
        </page>
    </page>
</site>

Gaia swfaddress问题

问题描述:今天Cailven用Gaia搭建NewBalance Sonic 574 mini site框架。本地测试时,地址栏并不随菜单跳转而改动。在设置本地安全路径后,地址栏首页能够跳转,但是次页面不行。

问题分析:地址栏有问题说明是swfaddress的问题。仔细看了site.xml,发现首页的title属性是英文,其他次页面都是中文。

问题解决:把其title都改为英文。一切正常了。