# intermediate config bcConf = Crafty.clone CONF.bigcard ################ # BigCard ################ Crafty.c 'BigCard', # Mouse interactivity, Tween (animation smooth) required: '2D, Canvas, Mouse, MouseWheel, Draggable, Tween' # always in focus layer init: -> @z = CONF.layer.focus return events: # copy attributes of target card Copy: (target) -> @target = target @attr { x: @target._x y: @target._y w: @target._w h: @target._h alpha: 0.5 } @origin 'center' return # transition into zoom version Enlarge: -> # set new origin on finished animation @one 'TweenEnd', -> @origin 'center' return # start animation @tween { x: bcConf.x y: bcConf.y w: bcConf.w h: bcConf.h alpha: 1 }, CONF.anim.time, CONF.anim.func return # fade out and destroy Fade: -> # remove this on finished animation @one 'TweenEnd', -> @destroy() return # transition back to target card @tween { x: @target._x y: @target._y w: @target._w h: @target._h alpha: 0.5 }, CONF.anim.time, CONF.anim.func return # fade on right click, reset on middle click MouseUp: (e) -> switch e.mouseButton when Crafty.mouseButtons.RIGHT @trigger 'Fade' when Crafty.mouseButtons.MIDDLE # reset intermediate config, then reset zoom bcConf = Crafty.clone CONF.bigcard @trigger 'Enlarge' return # zoom in and out MouseWheelScroll: (e) -> if e.target == @ # save origin origin = x: @ox y: @oy # new attributes @attr { w: @_w * (1 + e.direction * 0.1) h: @_h * (1 + e.direction * 0.1) } @origin 'center' # restore origin @attr { ox: origin.x oy: origin.y } # update intermediate config bcConf.x = @_x bcConf.y = @_y bcConf.w = @_w bcConf.h = @_h return StopDrag: -> # update intermediate config bcConf.x = @_x bcConf.y = @_y return