Commit 9e04d09be121ea9a2db10a6c1cb92096553f99ee
1 parent
58d00484
feat(animation): support duration, delay, interation-count and infinite
Showing
1 changed file
with
81 additions
and
7 deletions
front-end/h5/src/components/core/editor/edit-panel/animation.js
| ... | ... | @@ -103,7 +103,7 @@ export default { |
| 103 | 103 | </a-tabs> |
| 104 | 104 | ) |
| 105 | 105 | }, |
| 106 | - renderAnimationOptions () { | |
| 106 | + renderAnimationOptions (animationOption) { | |
| 107 | 107 | return ( |
| 108 | 108 | <a-form layout="horizontal"> |
| 109 | 109 | <a-form-item label="动画类型" labelCol={{ span: 5 }} wrapperCol={{ span: 16, offset: 2 }}> |
| ... | ... | @@ -117,14 +117,86 @@ export default { |
| 117 | 117 | </a-form-item> |
| 118 | 118 | <a-form-item label="动画时间" labelCol={{ span: 5 }} wrapperCol={{ span: 16, offset: 2 }} style="margin-bottom:0;"> |
| 119 | 119 | <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)' }}> |
| 120 | - <a-slider id="test" defaultValue={30} /> | |
| 120 | + <a-slider | |
| 121 | + defaultValue={2} | |
| 122 | + min={0} | |
| 123 | + max={20} | |
| 124 | + value={animationOption.duration} | |
| 125 | + onChange={value => { | |
| 126 | + animationOption.duration = value | |
| 127 | + }} | |
| 128 | + /> | |
| 121 | 129 | </a-form-item> |
| 130 | + <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)', marginLeft: '4px' }}> | |
| 131 | + <a-input-number | |
| 132 | + min={0} | |
| 133 | + max={20} | |
| 134 | + size="small" | |
| 135 | + formatter={value => `${value}秒`} | |
| 136 | + value={animationOption.duration} | |
| 137 | + onChange={value => { | |
| 138 | + animationOption.duration = value | |
| 139 | + }} | |
| 140 | + /> | |
| 141 | + </a-form-item> | |
| 142 | + </a-form-item> | |
| 143 | + <a-form-item label="延迟时间" labelCol={{ span: 5 }} wrapperCol={{ span: 16, offset: 2 }} style="margin-bottom:0;"> | |
| 122 | 144 | <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)' }}> |
| 123 | - <a-input-number min={1} max={20} size="small" formatter={value => `${value}秒`}/> | |
| 145 | + <a-slider | |
| 146 | + defaultValue={2} | |
| 147 | + min={0} | |
| 148 | + max={20} | |
| 149 | + value={animationOption.delay} | |
| 150 | + onChange={value => { | |
| 151 | + animationOption.delay = value | |
| 152 | + }} | |
| 153 | + /> | |
| 154 | + </a-form-item> | |
| 155 | + <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)', marginLeft: '4px' }}> | |
| 156 | + <a-input-number | |
| 157 | + min={0} | |
| 158 | + max={20} | |
| 159 | + size="small" | |
| 160 | + formatter={value => `${value}秒`} | |
| 161 | + value={animationOption.delay} | |
| 162 | + onChange={value => { | |
| 163 | + animationOption.delay = value | |
| 164 | + }} | |
| 165 | + /> | |
| 166 | + </a-form-item> | |
| 167 | + </a-form-item> | |
| 168 | + <a-form-item label="运行次数" labelCol={{ span: 5 }} wrapperCol={{ span: 16, offset: 2 }} style="margin-bottom:0;"> | |
| 169 | + <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)' }}> | |
| 170 | + <a-slider | |
| 171 | + defaultValue={2} | |
| 172 | + min={0} | |
| 173 | + max={20} | |
| 174 | + value={animationOption.interationCount} | |
| 175 | + onChange={value => { | |
| 176 | + animationOption.interationCount = value | |
| 177 | + }} | |
| 178 | + /> | |
| 179 | + </a-form-item> | |
| 180 | + <a-form-item style={{ display: 'inline-block', width: 'calc(50% - 12px)', marginLeft: '4px' }}> | |
| 181 | + <a-input-number | |
| 182 | + min={0} | |
| 183 | + max={20} | |
| 184 | + size="small" | |
| 185 | + formatter={value => `${value}次`} | |
| 186 | + value={animationOption.interationCount} | |
| 187 | + onChange={value => { | |
| 188 | + animationOption.interationCount = value | |
| 189 | + }} | |
| 190 | + /> | |
| 124 | 191 | </a-form-item> |
| 125 | 192 | </a-form-item> |
| 126 | 193 | <a-form-item label="循环播放" labelCol={{ span: 5 }} wrapperCol={{ span: 16, offset: 2 }} style="margin-bottom:0;"> |
| 127 | - <a-switch v-decorator="['switch', { valuePropName: 'checked' }]" /> | |
| 194 | + <a-switch | |
| 195 | + value={animationOption.infinite} | |
| 196 | + onChange={value => { | |
| 197 | + animationOption.infinite = value | |
| 198 | + }} | |
| 199 | + /> | |
| 128 | 200 | </a-form-item> |
| 129 | 201 | </a-form> |
| 130 | 202 | ) |
| ... | ... | @@ -140,7 +212,9 @@ export default { |
| 140 | 212 | <a-button type="primary" onClick={this.runAnimate}>运行动画<a-icon type="right-circle" /></a-button> |
| 141 | 213 | </a-button-group> |
| 142 | 214 | { |
| 143 | - this.animationQueue.length && | |
| 215 | + // Q:这边为何这样写:this.animationQueue.length && ? | |
| 216 | + // A:如果这样写的话,当 length === 0,的时候,0会显示在 UI 上 | |
| 217 | + !!this.animationQueue.length && | |
| 144 | 218 | <a-collapse activeKey={'' + this.activeCollapsePanel} onChange={(val) => { this.activeCollapsePanel = val }} class="collapse-wrapper"> |
| 145 | 219 | { |
| 146 | 220 | this.animationQueue.map((addedAnimation, index) => ( |
| ... | ... | @@ -148,9 +222,9 @@ export default { |
| 148 | 222 | <template slot="header"> |
| 149 | 223 | <span>动画{index + 1}</span> |
| 150 | 224 | <a-tag color="orange">{animationValue2Name[addedAnimation.type] || addedAnimation.type }</a-tag> |
| 151 | - {/* <a-icon onClick={this.deleteAnimate(index)}></a-icon> */} | |
| 225 | + <a-icon type="delete" onClick={() => this.deleteAnimate(index)} title="删除动画"></a-icon> | |
| 152 | 226 | </template> |
| 153 | - {this.renderAnimationOptions()} | |
| 227 | + {this.renderAnimationOptions(addedAnimation)} | |
| 154 | 228 | </a-collapse-panel> |
| 155 | 229 | )) |
| 156 | 230 | } | ... | ... |