官术网_书友最值得收藏!

More colors

One of the points this example sets out to illustrate is how thinking in terms of very simple abstractions and then building more complex ones on top of them make for code that is simpler to maintain and easier to modify.

As such, we will now update our animation to draw the sine wave in different colors. In this case, we would like to draw the wave in red if the sine of x is negative, and blue otherwise.

We already have the sine value coming through the sine-wave stream, so all we need to do is transform this stream into one that will give us the colors according to the preceding criteria:

(def colour (.pipe sine-wave 
(rx-map (fn [{:keys [sin]}] (if (< sin 0) "red" "blue")))))

The next step is to add the new stream into the main drawing loop—remember to comment the previous one so that we don't end up with multiple waves being drawn at the same time:

(-> (js/rxjs.zip sine-wave colour) 
    (.pipe (rx-take 700)) 
    (.subscribe (fn [[{:keys [x y]} colour]] 
                  (fill-rect x y colour)))) 

Once we save the file, we should see a new sine wave alternating between red and blue as the sine of x oscillates from -1 to 1.

主站蜘蛛池模板: 当涂县| 洪泽县| 会泽县| 多伦县| 江达县| 丰顺县| 新乡市| 克什克腾旗| 囊谦县| 宁阳县| 平泉县| 阳朔县| 长宁区| 鸡西市| 保山市| 平谷区| 佛冈县| 古蔺县| 兰坪| 苍南县| 湖北省| 扎囊县| 门头沟区| 宿州市| 太康县| 简阳市| 英吉沙县| 彩票| 石河子市| 庄浪县| 玛纳斯县| 湟中县| 道真| 呼图壁县| 久治县| 常德市| 临高县| 祁阳县| 龙山县| 南昌县| 阿拉善盟|