简体   繁体   English

为什么 Codepen.io 不显示这支笔的缩略图/预览?

[英]Why does Codepen.io not show a thumbnail / preview for this pen?

http://codepen.io/fauxnoir/pen/mJwBxm http://codepen.io/fauxnoir/pen/mJwBxm

AUDIO_FILE = 'http://matthiasdv.org/cdn/tracks/robbery_song'

CODECS = [ 'mp3' ]

stats = new Stats()
stats.domElement.style.position = 'absolute'
stats.domElement.style.left = '0px'
stats.domElement.style.top = '0px'

# CONFIG
FORCE_INWARDS = 1000
RADIUS_INWARDS = 3000
FORCE_OUTWARDS = -200000
RADIUS_OUTWARDS = 400
NUM_PARTICLES = 800
PARTICLE_RADIUS_MULTIPLIER = 0.6
PARTICLE_MIN_MASS = 3.0
PARTICLE_MAX_MASS = 6.0



class Simulation

  @COLOURS = [
    '#030106'
  ]

  constructor: ->

    @physics = new Physics()
    @mouse = new Particle()
    @mouse.fixed = true
    @height = window.innerHeight
    @width = window.innerWidth

    @renderTime = 0
    @counter = 0

  setup: (full = yes) ->

    min = new Vector 0.0, 0.0
    max = new Vector @width, @height

    bounds = new EdgeBounce min, max

    @physics.integrator = new Verlet()

    center = new Vector(@width/2, @height/2)

    attraction = new Attraction center, RADIUS_INWARDS, FORCE_INWARDS
    repulsion = new Attraction center, RADIUS_OUTWARDS, 0
    collide = new Collision()

    # Dancer
    @dancer = new Dancer()
    @kick = @dancer.createKick {
      treshold: 0.2
      onKick: (mag) =>
        repulsion.strength = FORCE_OUTWARDS

        r = Random.item @physics.particles

        repulsion.target.x = r.pos.x
        repulsion.target.y = r.pos.y

      offKick: (mag) ->
        repulsion.strength = 0
    }


    max = if full then NUM_PARTICLES else 200

    for i in [0..max]
      p = new Particle (Random PARTICLE_MIN_MASS, PARTICLE_MAX_MASS)
      p.setRadius p.mass * PARTICLE_RADIUS_MULTIPLIER

      p.moveTo new Vector (Random @width), (Random @height)

      p.behaviours.push attraction
      p.behaviours.push repulsion
      p.behaviours.push bounds
      p.behaviours.push collide

      collide.pool.push p

      @physics.particles.push p

  ### Initialise the demo (override). ###
  init: (@container, @renderer = new WebGLRenderer()) ->

    # Build the scene.
    @setup @renderer.gl?

    # Give the particles random colours.
    for particle in @physics.particles
      particle.colour ?= Random.item Simulation.COLOURS

    # Add event handlers.
    document.addEventListener 'resize', @resize, false

    # Add to render output to the DOM.
    @container.appendChild @renderer.domElement

    # Prepare the renderer.
    @renderer.mouse = @mouse
    @renderer.init @physics

    # Resize for the sake of the renderer.
    do @resize

    #Dancer
    @kick.on()

    @dancer.load {
      src: AUDIO_FILE
      codecs: CODECS
    }

    @dancer.play()

  ### Handler for window resize event. ###
  resize: (event) =>

    @width = window.innerWidth
    @height = window.innerHeight
    @renderer.setSize @width, @height

  ### Update loop. ###
  step: ->

    stats.begin()

    # Step physics.
    do @physics.step

    # Render every frame for WebGL, or every 3 frames for canvas.
    @renderer.render @physics if @renderer.gl? or ++@counter % 3 is 0

    stats.end()

  ### Clean up after yourself. ###
  destroy: ->

    # Remove event handlers.
    document.removeEventListener 'resize', @resize, false

    # Remove the render output from the DOM.
    try container.removeChild @renderer.domElement
    catch error

    do @renderer.destroy
    do @physics.destroy

    @renderer = null
    @physics = null
    @mouse = null



simulation = new Simulation()
playing = false
container = $('#container')

init = ->
  playing = true
  simulation.init(container.get(0))
  update()

update = ->
  requestAnimationFrame(update)

  simulation.step() if playing && simulation

init()

This particular pen works fine.这支特殊的笔很好用。 But... When I look at the preview in my profile It shows a blank preview?但是...当我查看我的个人资料中的预览时,它显示了一个空白的预览? My other Pens seem fine, it's just this one that doesn't display properly.我的其他笔看起来不错,只是这个笔显示不正确。

Why is this?为什么是这样? And what lines of code cause this?哪些代码行会导致这种情况?

Perhaps a loop with too many iterations causes the preview to hang也许迭代次数过多的循环会导致预览挂起

This help article may apply: Turn Off JavaScript in Previews此帮助文章可能适用: 在预览中关闭 JavaScript

"On any page that displays a grid of Pens as live previews… This can be useful if you…accidentally create a Pen with JavaScript that is taking to long to run. Perhaps an infinite loop or a loop with so many iterations it hangs the browser." “在任何显示 Pen 网格作为实时预览的页面上......如果你......不小心用 JavaScript 创建了一个需要很长时间运行的 Pen,这可能很有用。也许是无限循环或具有如此多迭代的循环,它会挂起浏览器.”

You'll also notice that after a few seconds your other live previews freeze.您还会注意到,几秒钟后您的其他实时预览会冻结。 This behavior can even be observed on the codepen.io homepage where memory intensive previews freeze after a few seconds while some previews (presumably less memory intensive) continue to animate.这种行为甚至可以在 codepen.io 主页上观察到,其中内存密集型预览在几秒钟后冻结,而一些预览(可能内存密集程度较低)继续动画。

FWIW it appears that the preview, while frozen, is showing the first frame of your pen as it appears on page load, which just happens to be a blank white screen. FWIW看来预览,而冻结,显示出它出现在页面加载,这恰好是一个空白屏幕笔的第一帧。 Perhaps a good compromise it to show some static version of the many particles initially so that the preview has something to show.也许是一个很好的妥协,它最初显示许多粒子的一些静态版本,以便预览可以显示一些内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM