예제 #1
0
        private void completeHandle(SAEventX e)
        {
            isLoaded = true;
            AssetResource resource = e.target as AssetResource;

            AssetsManager.bindEventHandle(resource, completeHandle, false);
            if (e.type == SAEventX.FAILED)
            {
                return;
            }

            if (gameObject.activeSelf == false)
            {
                recycle();
                return;
            }

            AudioClip clip = resource.data as AudioClip;

            if (clip != null)
            {
                _source.clip   = clip;
                _source.loop   = loop;
                _source.volume = _soundValue;
                _source.Play();
                if (loop == false)
                {
                    CallLater.Add(recycle, _source.clip.length);
                }
            }
        }
예제 #2
0
        public bool dispatchEvent(SAEventX e)
        {
            if (e == null)
            {
                return(false);
            }

            if (mEventListeners == null || mEventListeners.ContainsKey(e.type) == false)
            {
                return(false);
            }

            //不太明白下面几行的用意
            IEventDispatcher previousTarget = e.target;

            e.setTarget(mTarget);

            bool b = invokeEvent(e);

            if (previousTarget != null)
            {
                e.setTarget(previousTarget);
            }

            return(b);
        }
예제 #3
0
 public static void ToPool(SAEventX e)
 {
     if (sEventPool.Count < 100)
     {
         e.data = e.target = null;
         sEventPool.Push(e);
     }
 }
예제 #4
0
        protected void completeHandle(SAEventX e)
        {
            MonoDispatcher soundClip = (MonoDispatcher)e.target;
            string         name      = soundClip.name;

            _soundsOnce.Remove(name);
            soundClip.SetActive(false);
        }
예제 #5
0
        public bool dispatchEvent(SAEventX e)
        {
            if (eventDispatcher == null)
            {
                return(false);
            }

            return(eventDispatcher.dispatchEvent(e));
        }
예제 #6
0
        public bool dispatchEvent(SAEventX e)
        {
            if (eventDispatcher == null)
            {
                eventDispatcher = new EventDispatcher(this);
            }

            return(eventDispatcher.dispatchEvent(e));
        }
예제 #7
0
        protected virtual void clickHandle(SAEventX e)
        {
            IListItemRender item = e.target as IListItemRender;

            selectedItem = item;

            if (hasEventListener(SAEventX.ITEM_CLICK))
            {
                simpleDispatch(SAEventX.ITEM_CLICK, item);
            }
        }
예제 #8
0
        public static bool dispatchEvent(this GameObject self, SAEventX e)
        {
            MonoDispatcher dispatcher = self.GetOrAddComponent <MonoDispatcher>();

            if (dispatcher == null)
            {
                return(false);
            }

            return(dispatcher.dispatchEvent(e));
        }
예제 #9
0
        public bool simpleDispatch(string type, object data = null)
        {
            if (hasEventListener(type) == false)
            {
                return(false);
            }
            SAEventX e = SAEventX.FromPool(type, data);
            bool     b = dispatchEvent(e);

            SAEventX.ToPool(e);
            return(b);
        }
예제 #10
0
        private void resourceDisposeHandle(SAEventX e)
        {
            AssetResource res = e.target as AssetResource;

            res.removeEventListener(SAEventX.DISPOSE, resourceDisposeHandle);

            string uri = res.url.ToLower();

            if (_resourceMap.ContainsKey(uri))
            {
                _resourceMap.Remove(uri);
            }
        }
예제 #11
0
        private void clickHandle()
        {
            if (_enabled == false)
            {
                return;
            }

            if (hasEventListener(SAEventX.CLICK))
            {
                SAEventX e = SAEventX.FromPool(SAEventX.CLICK);
                bool     b = dispatchEvent(e);
                SAEventX.ToPool(e);
            }
        }
예제 #12
0
        public bool invokeEvent(SAEventX e)
        {
            if (mEventListeners == null)
            {
                return(false);
            }

            Signal signal;

            if (mEventListeners.TryGetValue(e.type, out signal) == false)
            {
                return(false);
            }

            SignalNode <SAEventX> t = signal.firstNode;

            if (t == null)
            {
                return(false);
            }

            List <Action <SAEventX> > temp = SimpleListPool <Action <SAEventX> > .Get();

            int i = 0;

            while (t != null)
            {
                temp.Add(t.action);
                t = t.next;
                i++;
            }

            e.setCurrentTarget(e.target);

            Action <SAEventX> listener;

            for (int j = 0; j < i; j++)
            {
                listener = temp[j];
                listener(e);
//                return true;
            }

            SimpleListPool <Action <SAEventX> > .Release(temp);

            return(true);
        }
예제 #13
0
        public static SAEventX FromPool(string type, object data = null)
        {
            SAEventX e;

            if (sEventPool.Count > 0)
            {
                e = sEventPool.Pop();
                e.reset(type, data);
                return(e);
            }
            else
            {
                e = new SAEventX(type, data);
                sEventPool.Push(e);
                return(e);
            }
        }
예제 #14
0
        //----------------------------------------Protected---------------------------------------//
        //只能内部调用,防止被意外销毁
        protected void hide(SAEventX e = null)
        {
            if (!isShow)
            {
                return;
            }

            doHide();

            if (skin != null)
            {
//                UIBase uiBase = skin.GetComponent<UIBase>();
//                if (uiBase != null)
//                {
//                    LfUI.DespawnUI(uiBase.Id);
//                }
                GameObject.Destroy(skin);
            }
        }
예제 #15
0
        private void btnHandler(SAEventX obj)
        {
            Camera.main.cullingMask &= ~(1 << 8);

            //            string imgUrl = "UI/newShare/btn_close";
            //            Texture2D texture2D = Resources.Load<Texture2D>(imgUrl);
            //            texture2D.EncodeToPNG();
            //            byte[] bytes = texture2D.GetRawTextureData();
            //#if UNITY_IOS
            //            mediaTagName = "MSG_INVITE";
            //            byte[] imgData = bytes;
            //            int imgDataLen = imgData.Length;
            //            WGPlatform.Instance.WGSendToWeixinWithPhoto(eWechatScene.WechatScene_Timeline, mediaTagName, imgData,
            //                imgDataLen, messageExt, messageAction);
            //#elif UNITY_ANDROID
            //            string imgLocalUrl = imgUrl;
            //            WGPlatform.Instance.WGSendToWeixinWithPhotoPath(eWechatScene.WechatScene_Session, "777", imgLocalUrl,
            //                "444", "555");
            //#endif
        }
예제 #16
0
 private void ItemClickHandler(SAEventX obj)
 {
     Debug.Log("pagelist点到了->" + pageList.selectedIndex);
 }
예제 #17
0
        private void onAdd(SAEventX obj)
        {
            var newValue = value + _pad;

            checkValue(newValue);
        }
예제 #18
0
        private void onMinus(SAEventX obj)
        {
            var newValue = value - _pad;

            checkValue(newValue);
        }
예제 #19
0
 private void ClickHandler(SAEventX obj)
 {
     display.text = "点到了";
     this.simpleDispatch(SAEventX.CLICK);
 }
예제 #20
0
 protected void backgroundClickHandle(SAEventX e)
 {
     this.hide(e);
 }