const { ccclass , property } = cc . _decorator ; @ ccclass export default class Screen_vibrating extends cc . Component { @ property ( cc . Node ) bgNode : cc . Node = null ; @ property ( cc . Node ) hitFeedback : cc . Node = null ; onLoad ( ) { this . shakeEffect ( this . bgNode , 1 ) ; } hit ( evn ) { this . shakeEffect ( evn . currentTarget , 0.6 ) ; this . hitFeedback . setPosition ( this . node . convertToNodeSpaceAR ( evn . getLocation ( ) ) ) ; this . hitFeedback . active = true ; let anim = this . hitFeedback . getComponent ( cc . Animation ) ; anim . on ( 'finished' , ( ) => { this . hitFeedback . active = false ; anim . setCurrentTime ( 0 ) ; anim . stop ( ) ; } ) ; anim . play ( ) ; } shakeEffect ( node , duration ) { node . stopAllActions ( ) ; node . runAction ( cc . sequence ( cc . moveTo ( 0.02 , cc . v2 ( 5 , 7 ) ) , cc . moveTo ( 0.02 , cc . v2 ( - 6 , 7 ) ) , cc . moveTo ( 0.02 , cc . v2 ( - 13 , 3 ) ) , cc . moveTo ( 0.02 , cc . v2 ( 3 , - 6 ) ) , cc . moveTo ( 0.02 , cc . v2 ( - 5 , 5 ) ) , cc . moveTo ( 0.02 , cc . v2 ( 2 , - 8 ) ) , cc . moveTo ( 0.02 , cc . v2 ( - 8 , - 10 ) ) , cc . moveTo ( 0.02 , cc . v2 ( 3 , 10 ) ) , cc . moveTo ( 0.02 , cc . v2 ( 0 , 0 ) ) ) . repeatForever ( ) ) ; this . scheduleOnce ( ( ) => { node . stopAllActions ( ) ; node . setPosition ( 0 , 0 ) ; } , duration ) ; } }