Jak mohu zjistit gesto zatřesení v PhoneGap 0.8?

hlasů
2

Já používám PhoneGap 0,8 a rád bych, aby odhalila základní gesto zatřesení. Zjistil jsem dvě důležité úryvky:

http://groups.google.com/group/phonegap/browse_thread/thread/25178468b8eb9e9f

http://phonegap.pbworks.com/Handling-Shake-Events

Ani jeden z nich pracuje pro mě. Bohužel dokumentace zdá trochu zastaralé a referenční API pro PhoneGap je jen banda testů. Vím, že to lze udělat já prostě nemají známé dobrý výchozí bod.

Jestli někdo může poskytnout krátký úryvek kódu detekce chvění pro PhoneGap, že vědí, pracuje pro ně byl bych velmi zavázán. Díky za váš čas!

Položena 06/01/2010 v 05:28
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
3

Váš první článek používá PhoneGap.Gesture, který tak daleko, jak vidím, neexistuje (alespoň pro iphone) na 0,8. Je to docela nedávný příspěvek by proto mohl být nedávno přidali? Osobně jsem nepoužil žádnou pozdější revize než 0,8

Přidal jsem gesto zatřesení podpěra PhoneGap aplikace ‚prodloužení‘ PhoneGap následovně. Ale nejprve varováním:

Apple již považováno PhoneGap 0.8 jako přijatelná pro podání do obchodu s aplikacemi. Protože se jedná v podstatě o prodloužení (i když velmi jednoduché) na PhoneGap 0,8 může být riziko odmítnutí. Aplikaci jsem vyvinul to pro dosud prošel schvalovacím procesem, takže nemohu dál radí na toto téma.

Také být vědomi toho, že to funguje pouze na OS 3.0 nebo vyšší v důsledku použití nového UIEventSubtypeMotionShakeAPI

Navíc je to iPhone specifické. Pokud chcete, aby křížové schopnosti platforma PhoneGap, tato odpověď nemusí být pro vás, pokud si nejste pohodlné provádění nativní modifikaci sebe na jiné platformy (android atd). V tomto případě může být lepší jen čekat na oficiální verzi PhoneGap, který podporuje tento na iPhone.

Přidejte následující kód PhoneGapViewController.m

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (UIEventSubtypeMotionShake == motion)
    {
        [webView stringByEvaluatingJavaScriptFromString:@"navigator.myext.onShakeGesture();"];
    }
}

Pak přidejte to jako javascript modul myext.js

/* We need PhoneGap.js to be loaded to work properly before we can initialise so wait for it here */
(function() 
{
    var timer = setInterval(function() 
    {
        if (typeof(PhoneGap == 'object'))
        {
            clearInterval(timer);
            myExtInit();
        }
    }, 1);
})();

function MyExt()
{
    // initialization
    this.callbacks = {
        onShakeGesture: []
    };
}

/* Called by ObjectiveC side when a shake gesture is detected */
MyExt.prototype.onShakeGesture = function()
{
    for (var i = 0; i < this.callbacks.onShakeGesture.length; i++) 
    {
        var f = this.callbacks.onShakeGesture[i];
        f();
    }
};

MyExt.prototype.addShakeGestureListener = function(shakeCallback)
{
    if (typeof(shakeCallback) == 'function')
    {
        this.callbacks.onShakeGesture.push(shakeCallback)
    }
};

function myExtInit()
{
    // Init phonegap extension specific objects using PhoneGap.addConstructor
    PhoneGap.addConstructor(function() {
        if (typeof navigator.myext == "undefined") navigator.myext = new MyExt();
    });
}

Nyní patří myext.js ve svém obsahu HTML <head>úseku těsně po vazbě naphonegap.js

<script type="text/javascript" charset="utf-8" src="myext.js"/>

a použití ze skriptu (například způsobí výstrahu, ale dělat to, co je třeba udělat):

function watchShake() {
  var cb = function(){
    navigator.notification.alert("Shake it!");
  };
    navigator.myext.addShakeGestureListener(cb);
}
Odpovězeno 07/01/2010 v 13:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more