Total Pageviews

Saturday, May 24, 2014

Event key in detail (1)

Event Key
សំរាប់ event មួយនេះកើតឡើងនៅពេលដែល keyboard key or gamepad/ joystick button ត្រូវបានចុចឬមិនចុច។ នៅក្នុង key event listener អាចដាក់វាជា​ true ដែលindicate ថាកម្មវិធីដែលនឹង handling  ក្នុងការទទួលនៅ key & overriding ទៅកាន់ operating system។ សំរាប់ android វានឹងត្រឡប់ជា true សំរាប់ back key ដែលនឹងការពារ operating system from backing our your app
Android: ​វានឹង raises key events សំរាប់គ្រប់ទាំង Keyboard keys, navigation buttons, volume buttons, gamepad/ joystic buttonsandroid វាមិន raise key events សំរាប់ home navigation button, task manager button or power button
IOS: វាមិន support នៅ key events ទេ
Windows: សំរាប់ Corona Simulator របស់ windows វា support  តែ key event នៅពេល simulating an android device។ វា support តែ keyboard keys & not gamepad joystic buttons
ចំណាំះ សំរាប់ keyevents នឹងមិនទទួលបើសិនជា native object ដូចជា TextField, TextBox or WebView handles them។ វាអាចកើតឡើងបើសិនជា native objects មាន​focus ហើយបើសិនជាវា override សំរាប់ key នោះ។ ឧះ បើសិនជា TextField & TextBox handle គ្រប់ទាំង keyboard keys, ការពារកម្មវិធីពីការទទួលនៅ key event ប៉ុន្តែវាមិន handle a back key event

នេះជា Properties របស់វាះ
event.descriptor
វាអាចអានបាននៅ string ដែល assigned តាមរយះ Corona ប្រើសំរាប់សំគាល់នៅ input devices។ សំរាប់ descriptor string ត្រូវបានប្រើជាមួយនឹងកម្មវិធីដែលបញ្ចូលនៅ key & axis binding
សំរាប់ descriptor string ត្រូវបានបង្កើតឡើងតាម devices’descriptor & name of the key ដែលត្រូវចុច ឬមិន។ ឧះ សំរាប់បូតុង២ដែលនៅលើ joystick អាចជាឈ្មោះ Joystick1: buttonA & joystick2 : button
ចំណាំះ សំរាប់ descriptor name វាមិនអាចផ្ទុកនៅ device name បានទេបើសិនជា key event ត្រូវបានបង្កើតឡើងដោយ software ដូចជា bottom navigation bar shown on screen។ សំរាប់ back key event វាជា key name ដែលត្រូវផ្តល់នៅ descriptorif u press the back key on an andoird device’s touchscreen then the descriptor name will be back

សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    -- Print the key's unique descriptor to the log.
    print( event.descriptor )

    -- Return false to indicate that this app is *not* overriding the received key.
    -- This lets the operating system execute its default handling of this key.
    return false
end

-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent );

event.device
វាផ្តល់នៅការ access ទៅកាន់ device ដែល key event ចេញពី
វាសំរាប់ប្រើជាមួយនឹង multiplayer games ដែលមាន input devices ដែលផ្តល់នៅ same keys/buttons។ វាអាចប្រើនៅ differentiate key events ចេញពី different devices or players
ចំណាំះ
 វារត់នៅលើតែ nil on iOS, Mac & Windows។ ពត័មានអំពី external input devices វាមិន support ទេ។ នៅលើ android this property will return nil បើសិនជា key event ចេញពី software ដូចជា virtual keyboard or the bottom virtual navigator bar

event.isAltDown
ប្រើសំរាប់បង្ហាញថា Alt key was held down នៅពេលដែល key event កើតឡើង។ ចំណាំថា this property ត្រូវបាន guaranteed ទៅកាន់ return true បើសិនជា key that was just pressed down was leftAlt or rightAlt
សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    if event.isAltDown then
        -- The Alt key was held down for the given key.
    else
        -- The Alt key was not held down for the given key.
    end
    return false
end
-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent )
event.isCommandDown
ប្រើសំរាប់បង្ហាញថា បើសិនជា command key was held down នៅពេលដែល key event បានកើតឡើង
ចំណាំះ នៅលើ Mac OS X វានឹងដំណើរការដូចជា isCtrlDown លើកលែងតែ command modifier key ។ នៅលើ Windows វាតែងតែ false ពីព្រោះ Platforms មិន support លើ Modifier key
សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    if event.isCommandDown then
        -- The command key was held down for the given key.
    else
        -- The command key was not held down for the given key.
    end
    return false
end

-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent )

event.isCtrlDown
ប្រើសំរាប់បង្ហាញបើសិនជា Control key was held down នៅពេលដែល key event បានកើតឡើង។ សូមចំណាំថា this property ត្រូវការ guaranteed ទៅកាន់ return true បើសិនជា key ត្រូវបាន pressed down was leftCtrl or rightCtrl
សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    if event.isCtrlDown then
        -- The control key was held down for the given key.
    else
        -- The control key was not held down for the given key.
    end
    return false
end

-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent )

event.isShiftDown
ប្រើសំរាប់បង្ហាញបើសិនជា Shift key was held down or if the Caps Lock key was on at the time នៅពេលដែល key event បានកើតឡើង។ ចំណាំថាសំរាប់ Property នេះមាន guaranteed to return true បើសិនជា key pressed down was leftShift rightShift or capsLock
សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    if event.isShiftDown then
        -- Shift was held down for the given key.
    else
        -- Shift was not held down for the given key.
    end
    return false
end

-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent )

event.keyName
នេះជា unique string name របស់ key ប្រើសំរាប់កំនត់ identify which key was pressed down or released។ វានឹងបញ្ចូលនៅ unknown បើសិនជា Corona មិនអាចកំនត់អត្តសញ្ញាណរបស់ key បាន។ វាអាចកើតឡើងនៅពេលដែល end user presses a custom OEM key on a keyborad
ចំណាំះ សំរាប់ key name មិនមែនជាតំណាងឪ្យ character or string ដែលបានកើតនៅពេលដែល pressing a key។​ សំរាប់ key name គឺជា unique ID assigned to the key ដែលត្រូវបានចុច
សូមមើលកូដះ
-- Called when a key event has been received.
local function onKeyEvent( event )
    -- Print which key was pressed down/up to the log.
    local message = "Key '" .. event.keyName .. "' was pressed " .. event.phase
    print( message )

    -- If the "back" key was pressed on Android, then prevent it from backing out of your app.
    if (event.keyName == "back") and (system.getInfo("platformName") == "Android") then
        return true
    end

    -- Return false to indicate that this app is *not* overriding the received key.
    -- This lets the operating system execute its default handling of this key.
    return false
end

-- Add the key event listener.
Runtime:addEventListener( "key", onKeyEvent );

No comments:

Post a Comment