1

actionBarを75ピクセル下に移動して、そこにadMob広告を絞り込めるようにしています。

私は試した:

navigator.actionBar.y=75;

しかし、視覚的に何も変わっていない、動いていない、エラーは発生していtrace(navigator.actionBar.y);ませんが、画面に表示されていないのに、75になっていると表示されます。

誰かアイデアはありますか?また、これは1つのビューのみを対象としているため、アプリケーション全体でアクションバーを下に移動するソリューションは使用できません。この特定のビューで下に移動する必要があります。

ありがとう!

編集:@ブライアン、提案をありがとう、ほとんどこの全体の混乱をしました。スキン内にadMob広告用のスペースを追加する機能を作成しようとしています。しかし、関数を正しく参照しているとは思いません。なぜなら、関数を参照してもエラーが発生せず、何も起こらないからです。

<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" >
    <!-- host component -->
    <fx:Metadata>
        [HostComponent("spark.components.ViewNavigator")]
    </fx:Metadata>
    <fx:Script>
        <![CDATA[

            public function adMobVisible(trueOrFalse:Boolean):void
            {
                if(trueOrFalse)
            {
                main_group.top=70;
            }
            else
            {
                main_group.top=0;
            }
            }

        ]]>
    </fx:Script>

    <!-- states -->
    <s:states>
        <s:State name="landscapeAndOverlay" />
        <s:State name="portraitAndOverlay" />
        <s:State name="landscape" />
        <s:State name="portrait" />
        <s:State name="disabled" />
        <s:State name="normal" />
        <!-- <s:State name="admob" /> -->
    </s:states>

    <s:VGroup id="main_group" width="100%" height="100%">
        <s:ActionBar id="actionBar" width="100%" />
        <s:Group id="contentGroup" width="100%" height="100%" />
    </s:VGroup>
</s:Skin>

やった:

import skins.AdMobHolderSkin;

protected var ad:AdMobHolderSkin = new AdMobHolderSkin();

上に...それから私はちょうど次のような簡単なことをしようとしました:

ad.adMobVisible(true);

しかし、何も起こりません。何か案は?これを手伝ってくれてありがとう。

4

1 に答える 1

2

のコードを調べると、単純な数学を使用して2つの項目(および)ViewNavigatorSkinがレイアウトされていることがわかります。つまり、設定または効果のあるレイアウトコンテナを使用していません。ActionBarGrouptopy

代わりに、スキンを適用する必要がありますViewNavigator。まず、スキンを定義します(:での設定方法に注意top="75"してVGroupください:

VNSkin.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark">
    <!-- host component -->
    <fx:Metadata>
        [HostComponent("spark.components.ViewNavigator")]
    </fx:Metadata>

    <!-- states -->
    <s:states>
        <s:State name="landscapeAndOverlay" />
        <s:State name="portraitAndOverlay" />
        <s:State name="landscape" />
        <s:State name="portrait" />
        <s:State name="disabled" />
        <s:State name="normal" />
        <s:State name="moved" />
    </s:states>

    <s:VGroup width="100%" height="100%" top="0" top.moved="75">
        <s:ActionBar id="actionBar" width="100%" />
        <s:Group id="contentGroup" width="100%" height="100%" />
    </s:VGroup>
</s:Skin>

次に、メインアプリケーション内で、このスキンを使用するためにViewNavigatorのスキンを作成します。

MyApp.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                            xmlns:s="library://ns.adobe.com/flex/spark" firstView="views.ActionbarMoveHomeView" applicationDPI="160" >  
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        s|ViewNavigator {
            skinClass: ClassReference("VNSkin")
        }   
    </fx:Style>
</s:ViewNavigatorApplication>

最後に、私のビューでは、状態を設定し、ビューがアクティブ化および非アクティブ化されたときに元に戻す必要があります。

MyView.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:viewActivate>
        navigator.skin.currentState = "moved";
    </s:viewActivate>

    <s:viewDeactivate>
        navigator.skin.currentState = "normal";
    </s:viewDeactivate>

    <s:Label text="test" click="navigator.pushView(SecondPage)" />
</s:View>

ViewNavigatorスキンが純粋なActionScriptではなくMXMLになっているため、この手法ではオーバーヘッドが増えることに注意してください。ソースコードに基づいて純粋なActionScriptでスキンを作成ViewNavigatorSkinし、オフセットを付けて配置できるようにすることを検討してください...しかし、MXMLスキンによるパフォーマンスの大幅な低下に気付いていない場合は、心配する必要はありません。

編集 私は私の答えを書いた後、あなたはそれを1つのビューにのみ必要であることに気づきました。VNSkinクラスに状態を追加してから、ビューコードで状態を切り替えるように変更しました(viewActivateおよびviewDeactivate。記録としては、これはすべてハックのように感じます。通信できるように、何らかの通知メカニズムを検討します。これ以外の方法で変化するために皮膚...しかし、私は少なくともあなたを1つのテクニックでこれを行うための道にあなたを導きました。誰かがここに来て、より良い何かを提案するのを見たいです。それまで、あなたはうまくいくものがあります:P

于 2011-11-02T20:16:35.573 に答える