protected virtual float[] ParsePropTypeScaleLock(CCNode node, CCNode parent, CCBReader reader, string propertyName) { float x = reader.ReadFloat(); float y = reader.ReadFloat(); var type = (CCBScaleType)reader.ReadInt(false); CCBHelper.SetRelativeScale(node, x, y, type, propertyName); if (reader.AnimatedProperties.Contains(propertyName)) { var baseValue = new List <CCBValue> { new CCBValue(x), new CCBValue(y), new CCBValue((int)type) }; reader.AnimationManager.SetBaseValue(baseValue, node, propertyName); } if (type == CCBScaleType.MultiplyResolution) { x *= CCBReader.ResolutionScale; y *= CCBReader.ResolutionScale; } var scaleLock = new float[2]; scaleLock[0] = x; scaleLock[1] = y; return(scaleLock); }
private void SetAnimatedProperty(string pPropName, CCNode node, object pValue, float fTweenDuraion) { if (fTweenDuraion > 0) { // Create a fake keyframe to generate the action from var kf1 = new CCBKeyframe(); kf1.Value = pValue; kf1.Time = fTweenDuraion; kf1.EasingType = CCBKeyframeEasing.Linear; // Animate CCActionInterval tweenAction = GetAction(null, kf1, pPropName, node); node.RunAction(tweenAction); } else { // Just set the value if (pPropName == "position") { // Get position type var array = (List <CCBValue>)GetBaseValue(node, pPropName); var type = (CCBPositionType)array[2].GetIntValue(); // Get relative position var value = (List <CCBValue>)pValue; float x = value[0].GetFloatValue(); float y = value[1].GetFloatValue(); node.Position = CCBHelper.GetAbsolutePosition(new CCPoint(x, y), type, GetContainerSize(node.Parent), pPropName); } else if (pPropName == "scale") { // Get scale type var array = (List <CCBValue>)GetBaseValue(node, pPropName); var type = (CCBScaleType)array[2].GetIntValue(); // Get relative scale var value = (List <CCBValue>)pValue; float x = value[0].GetFloatValue(); float y = value[1].GetFloatValue(); CCBHelper.SetRelativeScale(node, x, y, type, pPropName); } else { // [node setValue:value forKey:name]; // TODO only handle rotation, opacity, displayFrame, color if (pPropName == "rotation") { float rotate = ((CCBValue)pValue).GetFloatValue(); node.Rotation = rotate; } else if (pPropName == "opacity") { byte opacity = ((CCBValue)pValue).GetByteValue(); ((ICCRGBAProtocol)node).Opacity = opacity; } else if (pPropName == "displayFrame") { ((CCSprite)node).DisplayFrame = (CCSpriteFrame)pValue; } else if (pPropName == "color") { var color = (CCColor3BWapper)pValue; ((CCSprite)node).Color = color.getColor(); } else { CCLog.Log("unsupported property name is {0}", pPropName); Debug.Assert(false, "unsupported property now"); } } } }