如何使我的设备震动?

9
我正在使用AS3为Android平台开发Flash游戏。我希望在用户按下按钮时通过设备短暂震动的方式让用户知道按键已被触发。请问如何实现?是否需要导入指定的类,代码应该怎么写?
提前感谢!

1
我必须点赞这个问题,仅仅因为它的标题! :) - weltraumpirat
2个回答

10

为了使用震动扩展,AIR应用程序需要执行以下步骤:

通过调用isSupported来检查是否支持该扩展。 通过调用vibrate()并将震动的持续时间(以毫秒为单位)作为参数来引起设备震动。

var vibe:Vibration;
if (Vibration.isSupported)
{
    vibe = new Vibration();
    vibe.vibrate(2000);
}

Android应用程序 对于一个Android应用程序,在您的应用程序描述文件中包含震动权限:

Android权限:<uses-permission android:name="android.permission.VIBRATE"/>

参考资料:http://www.adobe.com/devnet/air/native-extensions-for-air/extensions/vibration.html


如果我把这段代码加入到我的程序中,它会提示找不到类型: Vibration,或者它不是一个编译时常量。 - David W
您需要在项目中包含ane和swc的引用。您是否使用Flash Builder 4.6? - J. Holmes
我只是使用Flash CS5.5。为了测试它是否可以在我的手机上运行,我使用Flash进行发布。 - David W

0

谢谢回答。它们让我进一步研究了这个主题。我发现的是:

在使用之前:

var vibe:Vibration;
if(Vibration.isSupported){
     vibe = new Vibration();
     vibe.vibrate(500);
}

你需要前往“编辑ActionScript设置”>“库路径”>“浏览SWC文件”

在那里,你需要放置这两个文件:

VibrationActionScriptLibary.swc - 你可以从thiszip文件中获取

com.adobe.extensions.Vibration.swc - 在同一个zip文件和目录中。你需要将.ane更改为.swc

接下来,你需要import com.adobe.nativeExtensions.Vibration;只需将该行与其他导入一起放置即可。

这就是你在Flash中需要做的全部。(除了编写实际的游戏...)

接下来,打开myApp-app.xml。 在xml中,向上滚动并检查ns.adobe.com的链接是否以3.0(或更高版本)结尾。如果没有,请将其更改为3.0。原生扩展需要Adobe AIR 3.0或更高版本。

继续向下滚动到你看到<initialWindow>部分。在结束标记后添加:

<extensions>
    <extensionID>com.adobe.Vibration</extensionID>
</extensions>

如果你向下滚动,你应该会看到类似于<android>的东西。在manifestAdditions中,你必须添加一个权限,让设备实际上允许它使用振动功能。

如果还没有<![CDATA[manifest>这一行,你需要添加它。如果你已经添加了它/或者它已经存在,你需要添加权限。这可以通过android:name="android.permission.VIBRATE"来完成。最后,你要确保它看起来像这样:

<![CDATA[<manifest>
    <uses-permission android:name="android.permission.VIBRATE"/>
</manifest>]]>

完成后,您可以保存并关闭xml文件。

完成所有操作后,您的.fla文件可能无法在Flash中发布,因为Flash不支持我们刚刚调整的内容。但是,我们仍然可以使用CMD(适用于Windows)发布.fla文件。这也是我对Mac用户的支持结束的地方,遗憾的是。在cmd中,您浏览到项目文件夹。我的项目文件夹在桌面上,所以我输入了cd desktopcd gamescd tilt android game。浏览到文件夹后,我输入了以下命令行...

AdobeAIRSDK\bin\adt -package -target apk -storetyp pkcs12 -keystore YOUR_LICENCE.p12 myApp.apk myapp-app.xml myapp.swf -extdir extensionDir

请确保在您的项目文件夹中有AdobeAIRSDK文件夹。如果上述内容(使用cmd)有点模糊,请点击此处观看他的视频以及关于如何使用命令行编译ANE应用程序的视频(这是我最初所做的)。

如果您有应用程序的图标,请确保它们位于项目文件夹中名为“icons”的文件夹中。如果您的图标位于此类文件夹中,请将文件夹名称粘贴到命令行的末尾。

应用程序应发布在您的项目文件夹中。

如果您对此有任何疑问,请务必观看我提供的视频。


你应该将这个答案作为问题的编辑发布,而不是作为答案发布。你应该给予@Vinayak.B正确解决方案的信用,因为它是正确的解决方案。你要求代码,而不是如何连接代码库。任何程序员都会假设你已经知道如何实现代码或者会尽职调查来实现它。所以你的答案不是对你的问题最正确的答案。 - iND

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接