88 lines
1.9 KiB
CoffeeScript
88 lines
1.9 KiB
CoffeeScript
|
# 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
|
||
|
}
|
||
|
return
|
||
|
|
||
|
# transition into zoom version
|
||
|
Enlarge: ->
|
||
|
@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 attributes of 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 re-zoom this
|
||
|
bcConf = Crafty.clone CONF.bigcard
|
||
|
@trigger 'Enlarge'
|
||
|
return
|
||
|
|
||
|
# zoom in and out
|
||
|
MouseWheelScroll: (e) ->
|
||
|
if e.target == @
|
||
|
# new attributes
|
||
|
@attr {
|
||
|
w: @_w * (1 + e.direction * 0.1)
|
||
|
h: @_h * (1 + e.direction * 0.1)
|
||
|
}
|
||
|
# update intermediate config
|
||
|
bcConf.w = @_w
|
||
|
bcConf.h = @_h
|
||
|
return
|
||
|
return
|
||
|
|
||
|
StopDrag: ->
|
||
|
# update intermediate config
|
||
|
bcConf.x = @_x
|
||
|
bcConf.y = @_y
|
||
|
return
|