You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "DarkStone (JIRA)" <ji...@apache.org> on 2014/12/19 09:08:14 UTC
[jira] [Updated] (FLEX-34689) How to correctly set default
skinClass for custom SkinnableComponent?
[ https://issues.apache.org/jira/browse/FLEX-34689?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
DarkStone updated FLEX-34689:
-----------------------------
Summary: How to correctly set default skinClass for custom SkinnableComponent? (was: How to set default skinClass for custom SkinnableComponent?)
> How to correctly set default skinClass for custom SkinnableComponent?
> ---------------------------------------------------------------------
>
> Key: FLEX-34689
> URL: https://issues.apache.org/jira/browse/FLEX-34689
> Project: Apache Flex
> Issue Type: Question
> Components: Spark: SkinnableComponent
> Affects Versions: Apache Flex 4.13.0
> Reporter: DarkStone
> Assignee: DarkStone
> Priority: Minor
> Labels: easyfix, easytest
> Attachments: TestComponent.as, TestComponentASkin.mxml, TestComponentBSkin.mxml, TestStyle.css
>
> Original Estimate: 0h
> Remaining Estimate: 0h
>
> [Step to reproduce the bug]
> 1. Create a subclass of SkinnableComponent named TestComponent.
> package test
> {
> import spark.components.supportClasses.ButtonBase;
> import spark.components.supportClasses.SkinnableComponent;
> import spark.core.IDisplayText;
>
> public class TestComponent extends SkinnableComponent
> {
> [SkinPart]
> public var textDisplay:IDisplayText;
>
> [SkinPart]
> public var testButton:ButtonBase;
>
> public function TestComponent()
> {
> super();
> }
> }
> }
> 2. Create 2 different skins for TestComponent:
> TestComponentASkin.mxml (see the attachment)
> TestComponentBSkin.mxml (see the attachment)
> 3. Create a CSS file named TestStyle.css
> @namespace s "library://ns.adobe.com/flex/spark";
> s|SkinnableComponent.testComponentB
> {
> skinClass: ClassReference("test.TestComponentBSkin");
> }
> 4. In the main Application.mxml, do the following:
> <?xml version="1.0" encoding="utf-8"?>
> <s:WindowedApplication frameRate="30" showStatusBar="false" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:test="test.*">
> <fx:Style source="test/TestStyle.css"/>
> <test:TestComponent id="tc" skinClass="test.TestComponentASkin" horizontalCenter="0" top="10"/>
> <s:Button label="Change Skin" click="tc.styleName='testComponentB'" horizontalCenter="0" bottom="10"/>
> </s:WindowedApplication>
> 5. Run the application, click the "Change Skin" button, then you'll see the bug, which is the TestComponent's skin won't change!
> [Solution]
> I have already solved this bug, it's very eazy to fix:
> Just modify the source code of SkinnableComponent.as, add the following codes to the class:
> override public function set styleName(value:Object):void
> {
> clearStyle("skinClass");
> super.styleName = value;
> }
> I've already fixed the bug, and pushed it to the develop branch of the Flex SDK git.
> DarkStone
> 2014-12-18
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)