0

6 つの dojox.mobile.IconMenuItems を持つ dojox.mobile.IconMenu があります。IconMenuItems を押すと、ボタンが押し込まれます。適切なタイミングでボタンの画像を切り替えるだけで、この動作を実現できます。

ここで発生する問題は次のとおりです。

デスクトップ (Chrome) の場合: ボタンをクリックするだけでビューが急速に変化し、押し込まれた新しいグラフィックが見えなくなります。ボタンを約 0.5 秒間押し続けてから、ボタンに新しい画像が表示されるまで離す必要があります。

Android/iOS デバイス (テスト済み: Chrome、Firefox、Opera、Skyfire、Board Browser、Dolphin、Safari): ボタンは画像を変更しますが、グラフィックの変更が遅すぎるため変更を確認できません。

コードはこちら(html)

<ul data-dojo-type="dojox.mobile.IconMenu" id="portalMenu" style="border: none; outline: none; background-image: url('../deliverables_800x480/backgrounds/img_bg_portal.gif'); position: absolute; z-index: 900; background-repeat: no-repeat; background-size: cover; height: 100%; width: 100%; top: 26px;">
<li label="IconMenuItem" data-dojo-type="dojox.mobile.IconMenuItem" id="portalButton1" icon="../deliverables_800x480/buttons/portal/btn_portal_freetext_big_normal.gif" style="border-top-color: transparent; border-right-color: transparent; border-bottom-color: transparent; border-left-color: transparent; line-height: 0px; text-align: center;" moveTo="null" onmousedown="toggleImg1()" onmousdown="toggleView1()"></li>

[その他のボタンはこちら]

ここに私が呼び出す関数があります(javascript):

onmousedown="toggleImg1()

// press button1
// press button1
function toggleImg1(){  
    portalButton1.set("icon", "../deliverables_800x480/buttons/portal/btn_portal_freetext_big_armed.gif");
}
function toggleView1() {   
    portalButton1.set("moveTo", "messaging");
    portalButton1.set("selected", true);
    portalButton1.set("icon", "../deliverables_800x480/buttons/portal/btn_portal_freetext_big_normal.gif");

}
4

1 に答える 1

1

まず、マークアップにエラーはありませんか? onmousedown と onmousedown が表示されますが、これは onmousedown/onmouseup ではないでしょうか?

ただし、これには dojo/touch を使用し、mousedown/up の代わりに touch.press/release を聞く必要があると思います。これにより、デバイスに応じて、タッチまたはマウスのいずれかを確実に聞くことができます。

または、アイテムの「選択」状態を見て、アイテムが選択されたときにアイコンを変更できますか? 何かのようなもの:

item.watch("selected", function(){
    this.set("icon", this.selected?"selected.png":"deselected.png");
});

次に、項目をしばらく選択したままにするために、_selEndMethod="timer" を設定できます。必要に応じて _duration を変更することもできます (デフォルトは 800 ですが、おそらく少し短くする必要があります)。

于 2013-03-06T14:06:42.073 に答える