private CGAffineTransform nodeToParentTransform() { if (isTransformDirty_) { transform_.setToIdentity(); if (!isRelativeAnchorPoint_ && !CGPoint.equalToPoint(anchorPointInPixels_, zero)) { transform_.translate(anchorPointInPixels_.x, anchorPointInPixels_.y); } if (!CGPoint.equalToPoint(position_, zero)) transform_.translate(position_.x, position_.y); if (rotation_ != 0) transform_.rotate(-ccMacros.CC_DEGREES_TO_RADIANS(rotation_)); if (skewX_ != 0 || skewY_ != 0) { /** create a skewed coordinate system and apply the skew to the transform */ transform_ = transform_.getTransformConcat( CGAffineTransform.make( 1.0f, MathLib.tan(ccMacros.CC_DEGREES_TO_RADIANS(skewY_)), MathLib.tan(ccMacros.CC_DEGREES_TO_RADIANS(skewX_)), 1.0f, 0.0f, 0.0f)); } if (!(scaleX_ == 1 && scaleY_ == 1)) transform_.scale(scaleX_, scaleY_); if (!CGPoint.equalToPoint(anchorPointInPixels_, zero)) transform_.translate(-anchorPointInPixels_.x, -anchorPointInPixels_.y); isTransformDirty_ = false; } return transform_; }