coffeescript Class

纵饮孤独 提交于 2019-12-09 01:35:01

问题


When I replace new Gallery with new Kinetic.Stage the code works properly When I work with the dirived class it does not work.

Why is the kind of deriving Gallery from Kinetic.Stage wrong ?

width = window.innerWidth   || document.documentElement.clientWidth || document.body.clientWidth || 0
height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0


class Gallery extends Kinetic.Stage
  constructor: (config) -> 
      super(config)



window.onload = -> 
  list_of_photos = jQuery('#_image img')
  x_pos = width/4
  y_pos = height/4
  stage = new Gallery
                container: "gallery_container"
                width: width
                height: height
  images_layer = new Kinetic.Layer()


  for image in list_of_photos
    imageObj = new Image()
    imageObj.src = image.src
    x_pos = x_pos + 100
    y_pos = y_pos + 10
    ori = new Kinetic.Image
                x: x_pos 
                y: y_pos
                image: imageObj
                draggable: true
                width: 200
                height: 200
    images_layer.add ori
  stage.add images_layer

回答1:


Problem - Kineticjs Objects are not "compatible" with coffeescript classes.

Solving - You have to use other way of calling "super"

class Gallery extends Kinetic.Stage
    constructor : (config) ->
        Kinetic.Stage.call(@, config)

Example here : http://jsfiddle.net/lavrton/w2EQD/4/

UPD: I found that this problem exists only for "constructor" method. Ok for others:

class Gallery extends Kinetic.Stage
  constructor: (config) -> 
    Kinetic.Stage.call(@, config)
  add : (item) ->
    console.log(item)
    super item


来源:https://stackoverflow.com/questions/14530450/coffeescript-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!