cocos creator 2.4.5 cc-button.vue代码
<template> <div> <ui-prop v-prop="target.target" :multi-values="multi" ></ui-prop> <div class="horizontal layout end-justified" style="padding:5px 0;margin-bottom:5px;"> <ui-button class="blue tiny" @confirm="resetNodeSize" v-disabled="_checkResizeToTarget(target.target, multi)" > Resize to Target </ui-button> </div> <ui-prop v-prop="target.interactable" :multi-values="multi" ></ui-prop> <ui-prop v-prop="target.enableAutoGrayEffect" v-show="_autoGrayEffectEnabled()" :multi-values="multi" ></ui-prop> <cc-gray-section v-if="_autoGrayEffectEnabled() && target.enableAutoGrayEffect.value" :target.sync="target" :multi-values="multi" ></cc-gray-section> <ui-prop v-prop="target.transition" :multi-values="multi" ></ui-prop> <!-- Color Transition --> <div v-if="_checkTransition(target.transition, 1, multi)"> <ui-prop indent=1 v-prop="target.normalColor" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.pressedColor" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.hoverColor" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.disabledColor" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.duration" :multi-values="multi" ></ui-prop> </div> <!-- Sprite Transition --> <div v-if="_checkTransition(target.transition, 2, multi)"> <ui-prop indent=1 v-prop="target.normalSprite" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.pressedSprite" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.hoverSprite" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.disabledSprite" :multi-values="multi" ></ui-prop> </div> <!-- Zoom Transition --> <div v-if="_checkTransition(target.transition, 3, multi)"> <ui-prop indent=1 v-prop="target.duration" :multi-values="multi" ></ui-prop> <ui-prop indent=1 v-prop="target.zoomScale" :multi-values="multi" ></ui-prop> </div> <cc-array-prop :target.sync="target.clickEvents"></cc-array-prop> </div> </template> <script> export default { name: 'cc-button', props: { target: { type: Object, required: true, twoWay: true }, multi: { type: Boolean, default: false } }, methods: { T: Editor.T, // 假设 Editor.T 在全局可用 resetNodeSize() { const payload = { id: this.target.uuid.value, path: "_resizeToTarget", type: "Boolean", isSubProp: false, value: true, }; Editor.Ipc.sendToPanel("scene", "scene:set-property", payload); }, _autoGrayEffectEnabled() { return ( this.target.transition.value !== 2 || !this.target.disabledSprite.value.uuid ); }, _checkResizeToTarget(t, n) { return n ? true : !t.value.uuid; }, _checkTransition(t, n, e) { return e ? t.values.every(val => val === n) : t.value === n; } } }; </script>