私はしばらくの間この問題に取り組んできましたが、それを回避する方法を見つけることができないようです.
画面の中央にある「セレクター」レイヤーを使用して、水平スクロールホイールモジュール(「レイヤー」配列で構成される)を構築しようとしています。このレイヤーは、上に着陸した前記配列内のレイヤーを選択し、そのレイヤーの名前とページを表示しますそれはそれに関連付けられています。つまり、「beige layer」が「selector」に着地すると、this.name が this.layer の下に表示され、「beige page」.x=0 になります。
現在問題は、ホイールが onDrag しか動かないことです。そのため、onScroll とは対照的に、ホイールを動かすにはドラッグし続ける必要があります。「レイヤー」配列内のレイヤーの x 位置を「セレクター」を基準にして読み取り、コマンドを起動してみました。また、ページの .parent プロパティをいじってみましたが、うまくいきません。そうあるべきです。
それが役立つ場合は、フレーマーのリンクがありますhttp://share.framerjs.com/psbqx3dvqtz9/
皆さん、どんな助けもいただければ幸いです。
前もって感謝します!
アレックス
layerCount=8
circleCenterZ=0
circleCenterX= Screen.width / 2
circleRadius= 500
scrollSensitivity= 50
depthOfField= 25
divide= layerCount/Math.PI/1.6
allPosZ=[]
layers=[]
savX = 0
sX = 0
newCat=[]
colors=["green","red","blue","white","pink","purple","beige","orange","yellow","brown"]
select=new PageComponent
x: 5
y: 636
backgroundColor: null
borderWidth: 5
clip:false
scrollVertical:false
scroll = new ScrollComponent # invisible proxy ScrollComponent
width: Screen.width, y:500
scrollVertical: false
height: 306
scroll.content.opacity = 0
colors.forEach (cat,i) ->
posZ= allPosZ[i]= circleCenterZ+(circleRadius/2)*Math.cos(i/divide)
posX= circleCenterX+(circleRadius/2)*Math.sin(i/divide)
layer=layers[i]= new Layer
width:109
height:109
parent:select.content
y: select.height/5
borderRadius: 100
name: colors[i]
midX: posX
z: posZ
layers[0].onClick ->
print this.name
maxDepth = Math.max.apply @, allPosZ
minDepth = Math.min.apply @, allPosZ
for layer,i in layers
darken = Utils.modulate(layer.z,[maxDepth,minDepth],[0,1], true)
layer.blur = Utils.modulate(layer.z,[maxDepth/3,minDepth],[0,depthOfField], true)
scroll.content.onDrag ->
sX = (@.x + savX) / scrollSensitivity
for layer,i in layers
posZ= allPosZ[i]= circleCenterZ+(circleRadius/2)*Math.cos((i+sX)/divide)
posX= circleCenterX+(circleRadius/2)*Math.sin((i+sX)/divide)
layer.z = posZ
layer.midX = posX
darken = Utils.modulate(posZ,[maxDepth,minDepth],[0,1], true)
layer.blur = Utils.modulate(posZ,[maxDepth/3,minDepth],[0,depthOfField], true)
scroll.content.onDragEnd ->
savX = sX * scrollSensitivity
@.x = 0
for i in [0...layerCount]
category=newCat[i]=new Layer
backgroundColor: colors[i]
width: Screen.width
x: Screen.width*i
name: colors[i]+" "+"page"