/// <summary> /// /// </summary> /// <param name="uri"></param> private void initUri(SwfURI uri) { frameCallbacks = new Dictionary <int, FrameCallback>(); if (((uri != null) && (uri.swf != null)) && (uri.swf.Length != 0)) { swfUri = uri; base.assetContext = MovieClipPlayer._preloadSWF(swfUri.swf); if (swfUri.linkage != null) { base.setSymbolName(swfUri.linkage); } if (swfUri.label != null) { gotoAndStop(swfUri.label); } } }
/// <summary> /// /// </summary> /// <param name="frameNum"></param> /// <param name="isFrameUpdate"></param> protected void _setFrame(int frameNum, bool isFrameUpdate) { if (m_FrameNum == frameNum) { return; } if (frameNum < 0) { frameNum = 0; } else if (frameNum >= totalFrames) { frameNum = totalFrames - 1; } m_FrameNum = frameNum; base.m_Children.Clear(); if ((m_FrameNum < 0) || (m_FrameNum >= m_MovieClipInfo.frames.Count)) { return; } DisplayObjectInfo[] displayList = m_MovieClipInfo.frames[m_FrameNum]; int len = displayList.Length; for (int i = 0; i < len; i++) { DisplayObjectInfo dispInfo = displayList[i]; if (m_InstanceCache == null) { m_InstanceCache = new Dictionary <short, DisplayObjectContainer>(); } if (dispInfo.isBitmap) { DisplayObjectContainer displayObject = !m_InstanceCache.ContainsKey(dispInfo.instanceId) ? null : m_InstanceCache[dispInfo.instanceId]; if ((displayObject != null) && (displayObject.cachedCid != dispInfo.cid)) { displayObject = null; } if (displayObject == null) { BitmapAssetInfo bmpInfo = assetContext.bitmaps[dispInfo.cid]; displayObject = new DisplayObjectContainer(); bmpInfo.material = assetContext.material; displayObject.bmpInfo = bmpInfo; displayObject.cachedCid = dispInfo.cid; m_InstanceCache[dispInfo.instanceId] = displayObject; } base.addChild(displayObject); dispInfo.tranform.applyToSprite(displayObject); } else { MovieClipAssetInfo info3 = assetContext.exports[dispInfo.cid]; MovieClipPlayer player = !m_InstanceCache.ContainsKey(dispInfo.instanceId) ? null : (m_InstanceCache[dispInfo.instanceId] is MovieClipPlayer ? (MovieClipPlayer)m_InstanceCache[dispInfo.instanceId] : null); if ((player != null) && (player.cachedCid != dispInfo.cid)) { player = null; } if (player == null) { player = new MovieClipPlayer(null, null); player.setSymbolByCid(assetContext, dispInfo.cid); player.cachedCid = dispInfo.cid; if (isFrameUpdate) { player.m_FrameNum = -1; } else { player.setFrame(1, isFrameUpdate); } m_InstanceCache[dispInfo.instanceId] = player; } base.addChild(player); dispInfo.tranform.applyToSprite(player); } } if (frameCallbacks != null && frameCallbacks.ContainsKey(m_FrameNum)) { frameCallbacks[m_FrameNum](); } if (!string.IsNullOrEmpty(m_NextSymbolName) && frameNum >= totalFrames - 1) { setSymbolName(m_NextSymbolName); } }