2016-04-07 44 views
0

Aşağıdaki işlev, Şekil/Form öğesini bir Öğeye dönüştürmek için collage kullanımını içerir.Elm - Form denetimi

makeSlider : Element -> Form -> Element 
makeSlider sliderShape sliderBarForm = 
    let                         
    sliderBar = 
     --convert sliderBarForm from type Form to Element 
     collage 1000 1000 [(move (0,0) sliderBarForm)] 
    in 
    layers [sliderShape, sliderBar] 

makeSlider fonksiyon sliderBarForm açık boyutlarını bilmek gerekir kalmaması, Graphics.Element.sizeOf gibi bir form'ın boyutlarını ayıklamak için bir yolu var mı?

Ya

collage 1000 1000 [(move (0,0) sliderBarForm)]

toElement (move (0,0) sliderBarForm) ile değiştirilebilir böylece toElement işlevi vardır?

cevap

3

Bir formun boyutlarını kolayca alabileceğinizi düşünmüyorum. Sanırım bir form, çok farklı türde şeyler (şekiller, yollar, vb.) Olabilir. Boyutları daha sonra bilmem gerektiğinde, formu oluştururken onları takip ediyorum.

type alias MyForm = 
    { form : Form 
    , width : Int 
    , height : Int 
    } 

makeRectForm: Float -> Float -> MyForm 
makeRectForm w h = {form: (filled grey (rect w h)), width: (round w), height: (round h)} 

Sonra durumda collage ile MyForm kullanabilirsiniz.

makeSlider : Element -> MyForm -> Element 
makeSlider sliderShape sliderBarMyForm = 
    let                         
    sliderBar = 
     --convert sliderBarForm from type Form to Element 
     collage sliderBarMyForm.width sliderBarMyForm.height [(move (0,0) sliderBarMyForm)] 
    in 
    layers [sliderShape, sliderBar] 
+0

"makeSlider" için fazladan parametreler kullanmam gerekmediğinden, mantıklı - teşekkürler - harika olur. – category